【发布时间】:2010-12-07 23:17:56
【问题描述】:
简单的问题,我正在编写一个需要打开巨大图像文件(8kx8k)的程序,但我对如何初始化巨大的数组以在 c++ 中保存图像有点困惑。
我一直在尝试这样的事情:
long long SIZE = 8092*8092; ///8096*8096
double* array;
array = (double*) malloc(sizeof(double) * SIZE);
if (array == NULL)
{
fprintf(stderr,"Could not allocate that much memory");
}
但有时我的 NULL 检查没有发现数组未初始化,知道为什么吗?
此外,即使在具有 12 GB RAM 的 x64 机器上运行,我也无法初始化超过 2 或 3 个数组,知道为什么吗?
我真的希望不必使用数组部分来代替。欢迎任何帮助。
谢谢。
【问题讨论】:
-
如果您在 Windows 下,请查看地址窗口扩展:msdn.microsoft.com/en-us/library/aa366527(VS.85).aspx
-
注意:
malloc是C分配内存的方式,在C++中你应该使用new。 -
可能是一个错字,但仍然:“8k”应该是 8 * 1024,即 8192。“8096”读起来像是 4k (4096) 和 8k 的混合。
-
“数组未初始化”是什么意思? Malloc 不会初始化它分配的内存。你必须自己做。
-
Ups,是的,它是 8092,感谢 unwind 发现错误。当您在离开吃午饭之前急于发布问题时,就会发生这种情况。
标签: c++ arrays x86 64-bit dynamic-arrays