int main ()
{
int * b;
b = (int*) malloc (1);
*b=110000;
free (b);
return 0;
}
为什么堆损坏发生在free (b);
?
IMO,堆损坏已经发生在 *b=110000;
。
最佳答案
malloc()
的参数是要分配的字节数。您需要使用:
b = (int*) malloc(sizeof(int));
您分配的 block 太小,然后向其中写入的字节数多于您分配的字节数,这会覆盖 block 旁边的簿记信息,从而破坏堆。
关于c - C 中的堆损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3923290/