c - C 中的堆损坏

标签 c heap-corruption

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/

相关文章:

c - 如何在Makefile中循环遍历n个测试用例?

c - 编程 MSP430 的工具和步骤

c - 结构体指针前向声明?

c - 什么时候使用 hostent 中的这些其他字段?

c++ - 矩阵类的 4 写入大小无效(使用 valgrind)

c++ - OpenCV 2.4.0 C++ goodFeaturesToTrack 损坏堆?

c - 如何通过PID唤醒进程? (在C中)

c - 释放分配的内存时堆损坏 (C)

c++ - 堆损坏 - 加载文件(StaticMesh)

c++ - 是否有适用于 Windows 的免费堆损坏检测工具?