main()
{
int *p;
p = calloc(5,2);
int i;
for(i=0;i<5;i++){
printf("%d ",*(p+i));
}
}
当calloc默认将所有 block 的内存设置为零时,为什么输出在最后一个内存块中给出垃圾值?
最佳答案
您应该使用calloc(5, sizeof(int))
。您分配了 5 x 2 字节,但 int 通常是 4 字节大。由于可移植性,使用 sizeof() 是一个很好的做法。
关于c - 最后一个内存块中 Calloc 中的垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40706937/