以下代码:
#include<stdlib.h>
#include<stdio.h>
int main (void) {
FILE** f;
if ( (*f = (FILE *)malloc( sizeof(FILE *)) ) == NULL) {
printf("Out of RAM or some other disaster!\n");
return 1;
}
printf("OK!\n");
return 0;
}
在Mac OS X 10.8上编译和运行没有问题。但在Windows 7上(使用MinGW编译),它会在malloc()上崩溃。为什么会这样,或者有什么想法可以阻止它发生?
谢谢!
注意:这显然是原来一个大程序的一部分,但我已将整个程序缩小到上述代码,并在Mac和PC上尝试了此代码,并复制了该行为。
if
语句中的一个左括号之前,代码是无法编译通过的。在那里你开了一个括号,但是却没有关闭一个。 - Daniel Fischer