据我所知,调用malloc()
基本上意味着程序正在向操作系统请求大量内存。我正在编写一个程序来与相机连接,在这个程序中,我需要分配足够大的存储空间来存储数百张图像(它是一个快速相机)。如何更改C++中的malloc()分配的最大大小
当我为大约1.9Gb的图像分配空间时,一切正常。分配计算方法很简单:
int allocateBurst(int numImages)
{
int streamSize = ZIMAGESIZE * numImages;
data.images = new unsigned short [streamSize];
return 0;
}
但只要我去了2 GB限制,我得到运行时错误是这样的:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
好像2个演出可能是最大尺寸我可以一次分配。我有32 Gig的内存,并希望能够在一次分配中分配更大的内存。这可能吗?
我正在运行Ubuntu 12.10。
可能重复的[I想要一个任意大的缓冲区在Linux/C/C + +](http://stackoverflow.com/questions/8317011/i-want-an-arbitrarily-large-buffer-in-linux-cc) –
是二进制编译为64-位? –
是的,它编译为64位 –