Hoo*_*lum 1 c memory malloc null
此代码显示"unsuccesful"但如果将0替换为0则不会为NULL.我不知道如何分配0个内存空间.我知道没有用但是不是NULL == 0L所以它也应该是== 0 ..
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *ptr;
if((ptr = malloc(-1)) == NULL)
printf("unsuccessful: no memory space was allocated.\n");
else{
printf("successful: memoryspace was allocated. \n");
free(ptr);
}
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
cni*_*tar 10
它是实现定义的:
7.22.3-1
如果无法分配空间,则返回空指针.如果 请求的空间大小为零,则行为是实现定义的:返回空指针,或者行为就像大小是非零值一样,除了返回的指针不应该用于访问对象.
因此,它可以返回NULL,但它不具备对.另外,为了澄清malloc(-1)失败的原因,请注意其原型是:
void *malloc(size_t size);
^^^^^^
Run Code Online (Sandbox Code Playgroud)
因此,您将转换-1为无符号类型,从而产生非常大的值.