考虑下面的代码片段:
#include <stdio.h>
int main()
{
int p = malloc( sizeof( int ) );
return 0;
}
上面的程序编译成功,没有任何警告。
由于存储块的地址integer variable
而不是指针,它不应该给出错误/警告吗?
最初,我认为这种行为很奇怪,因为我忘记包含stdlib
. 很快,我的假设就失败了。即使包含 ,行为也是相同的stdlib
。
包含后请参阅以下程序stdlib
#include <stdio.h>
#include <stdlib.h>
int main()
{
int p = malloc( sizeof( int ) );
return 0;
}
这个程序也有类似的行为。
为什么编译成功?