我的程序中有大约+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。 如果存在此异常的处理程序,则可以安全地继续该程序。
答案 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的优点一般是由于析构函数而自动释放内存。