C程序abort()使.exe访问在终止后被拒绝



在C中做不同的基础工作时,我发现了一个错误,到目前为止,在网上还没有找到答案。

在命令提示符下在Windows 10上使用TCC:

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main(int argc, char **argv) {
abort(); //or assert()
return 0;
}

问题首先出现在assert()(如assert(1==0);(中的某个伪表达式中,该表达式调用abort()。代码的其余部分,在abort()之前,只是printfs和几个sizeof的列表,在我添加assert/abort之前没有出现任何问题。程序在应该终止的位置终止。然后,我无法写入(重新编译(或删除.exe。在任务列表中,该程序的列出次数与运行次数一样多。它似乎卡在了"某个地方"。CCD_ 9给出3。我必须以管理员权限对他们进行taskkill。

(我用gcc在Ubuntu上试用了这些代码,效果很好。(

我卸载了ZoneAlarm,一切恢复正常。似乎在默认情况下,这个防火墙可能会保持命令提示符.exe的活动状态,该命令提示符.exe在退出时返回一个值(returnexitabortassert(。

最新更新