【发布时间】:2016-08-07 06:18:38
【问题描述】:
我的程序中有大约 +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。 如果有这个异常的处理程序,程序可以安全地继续。
【问题讨论】:
-
附注如果适合您的应用程序,请考虑使用
std::vector。 -
您也可以使用
memset将内存归零,这样可能会更快。 -
@Inline:
memset不保证清零除整数数组之外的任何内容。不能保证“0.”的位表示为全零。
标签: c++ visual-studio heap-memory