将值分配给太多动态分配的数组时程序崩溃 - C ++

时间:2016-08-07 06:18:38

标签: c++ visual-studio heap

我的程序中有大约+30个动态分配的数组,每个区域的定义如下:

int Nx = 240;
int Ny = 240;
double* array = new double(Nx*Ny);

我可以为其中的16个分配值,但是一旦我到达第17个,就会抛出seg错误!

这是抛出它的代码,完全没问题!

for (int i = 0; i < Nx*Ny; i++) {
    array[i] = 0;
}

我真的不知道为什么,我想用完了堆,但是因为我有4GB的RAM应该是不可能的! 我正在使用MSVS15并在Windows 10上运行该程序!

知道为什么会这样吗? 确切的错误:

  

ecostress.exe中0x00298389处抛出异常:0xC0000005:访问冲突写入位置0x01D2B000。   如果存在此异常的处理程序,则可以安全地继续该程序。

2 个答案:

答案 0 :(得分:6)

简单的拼写错误:

<c:forEach var="attribute" items="${input.attributes}">
    <c:out value="${attribute.key}" />=<c:out value="${attribute.value}" />
</c:forEach>

答案 1 :(得分:3)

@Hurkyl回答正确。

我只是想补充一点,如果是在C ++上,那么使用矢量会更好:

vector<int> array(Nx*Ny);

要直接访问指针,您可以使用&array[0],但通常没有理由这样做,您仍然可以执行array[0] = 0

vector和stl的优点一般是由于析构函数而自动释放内存。