我一直在为学校研究排序算法,遇到了一个奇怪的问题。当我创建一个大于六个元素的整数数组时,我会在“free.c”和堆损坏错误中遇到中断。
我将其缩小到的代码如下。
#include <iostream>
using namespace std;
int main(){
int * pie = new int(7);
pie[6] = 1;
cout << pie[6];
return 0;
}
有时您需要分配的不仅仅是最后一个值,但是我可以在多台计算机上的 Visual Studio 2012 和 2010 上遇到此错误,但是在 Linux 中,此代码可以正常工作。
这是 Windows 的问题,我一直在做动态 int 数组错误还是什么?
注意:运行几次后,有时 VS 中的输出会说明添加堆保护分流器,这似乎解决了引发异常的测试,但仍然不能解决大型应用程序中的问题(我会觉得不得不需要将这种保护应用于我的代码)。
谢谢!