下面的 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 的行为是否正确?
由于该测试,回调在两种情况下都有不同的效果。