下面的 ANSI C 代码在使用 Viasual Studio 2010 编译时返回一个有效指针(编译为 C 代码 (/TC)):
#include <stdio.h> #include <stdlib.h> #include <内存.h> 无效的主要() { 无效* p = NULL; 诠释我=0; p = calloc(0, 100); 如果 ( p != NULL ) { printf("成功。\n"); 免费 ( p ); p = 空; } 别的 { printf ( "失败.\n" ); } }
使用 IBM CICS 的 C 编译器的相同代码具有不同的行为,在 API 调用 calloc 时返回 NULL。
Visual Studio 2010 的行为是否正确?
由于该测试,回调在两种情况下都有不同的效果。