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中的输出会说一些关于添加堆保护分流的内容,这似乎解决了抛出异常的测试,但仍然无法解决大型应用程序中的问题(我会觉得不好需要这样的保护应用于我的代码).
谢谢!
在这种情况下,您将分配一个具有值的整数,7但将其视为7元素数组.您需要进行实际的数组分配
int* pie = new int[7];
Run Code Online (Sandbox Code Playgroud)
也不会伤到结束时释放内存main:)
delete[] pie;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |