我是Qt的新手,需要加載和處理一些大文件。相反,我的內存不足。下面的代碼說明了我的問題:當僅使用600 MB內存時調整QByteArray的大小會拋出std :: bad_alloc
QByteArray mem;
for(int i=1; i<=20; ++i)
{
std::cout << "eating " << (i * 100) << "MB";
mem.resize(i * 100 * 1024 * 1024);
}
我得到std :: bad_alloc達到600MB時。這真的不應該發生。 是否有一個祕密開關來增加堆大小?
我在Windows和Visual C++ 10.0 x86編譯器上使用Qt 5.0.2。
很好的答案。我不知道/ LARGEADDRESSAWARE選項。 – MadDave
不過,我很驚訝,我遇到了相對較小的分配問題。從500MB調整到600MB意味着我在內存中有一個500MB的塊,需要一個600MB的塊。聲音在2GB堆中可用。碎片不會那麼糟......但我想你一定是對的。無論如何,沒有理由爲什麼我不應該使用x64。 – MadDave
我沒有看過QByteArray的實現,但是如果它在內存塊的原地擴展,即使最小的碎片可能會導致問題。 –