int main()
{
char *p;
p = (char* ) malloc(sizeof(char) * 0);
printf("Hello Enter the data without spaces :\n");
scanf("%s",p);
printf("The entered string is %s\n",p);
//puts(p);
}
在编译上面的代码并运行它之后,即使我们为指针p分配了0字节的内存,程序仍能够读取字符串。
p = (char* ) malloc(0)
语句中实际发生了什么? 最佳答案
由实现定义,malloc()
将返回什么,但是使用该指针是未定义的行为。未定义的行为意味着从程序正常工作到崩溃都可以发生任何事情,所有安全的赌注都没有了。
C99标准:
7.22.3内存管理功能
第1段:
关于c - malloc(0)的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10684595/