Windows C++整数数组堆损坏

Wel*_*ire 0 c++ arrays int visual-studio-2010 visual-studio-2012

我一直致力于为学校排序算法,并遇到了一个奇怪的问题.当我创建一个大于六个元素的整数数组时,我会遇到"free.c"和堆损坏错误.

我把它缩小到的代码如下.

#include <iostream>

using namespace std;

int main(){
    int * pie = new int(7);
    pie[6] = 1;

    cout << pie[6];

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有时您需要分配的不仅仅是最后一个值,但是我可以在多台计算机上的Visual Studio 2012和2010上获得此错误,在Linux中,此代码可以正常工作.

这是Windows的一个问题,我一直在做动态int数组错误或什么?

注意:运行这几次之后,有时VS中的输出会说一些关于添加堆保护分流的内容,这似乎解决了抛出异常的测试,但仍然无法解决大型应用程序中的问题(我会觉得不好需要这样的保护应用于我的代码).

谢谢!

Jar*_*Par 7

在这种情况下,您将分配一个具有值的整数,7但将其视为7元素数组.您需要进行实际的数组分配

int* pie = new int[7];
Run Code Online (Sandbox Code Playgroud)

也不会伤到结束时释放内存main:)

delete[] pie;
Run Code Online (Sandbox Code Playgroud)