我正在调查由于堆损坏而导致的崩溃。由于这个问题很重要并且涉及分析堆栈和转储结果,因此我决定对与崩溃相关的文件进行代码审查。
坦率地说,我对堆何时可能损坏没有深入的了解。
如果您能提出可能导致堆损坏的方案,我将不胜感激。
平台:Windows XP
语言:C++
编译器:VC6
最佳答案
常见的场景包括:
- 在数组的分配空间之外写入(
char *stuff = new char[10]; stuff[10] = 3;
) - 转换为错误的类型
- 未初始化的指针
- -> 和 . 的拼写错误
- 使用 * 和 &(或两者的倍数)时出现拼写错误
[编辑] 从评论中,还有一些:
- 将 new [] 和 new 与 delete [] 和 delete 混合使用
- 复制构造函数丢失或不正确
- 指向垃圾的指针
- 对同一数据多次调用 delete
- 没有虚析构函数的多态基类
关于c++ - 堆损坏 : What could the cause be?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1504251/