爲了簡單起見,請考慮這個具有3個屬性的類。C++異常:std :: bad_alloc
class Human
{
public:
int id;
int age;
std::string name;
};
int main()
{
Human *h = new Human[120000]; <-- breaking
return 0;
}
我得到的錯誤是在在0x76ACC52F在Human.exe 未處理的異常:微軟C++異常:性病:: bad_alloc的內存位置0x000D0EA8。
運行該程序的機器具有32 GB RAM和1 TB硬盤,並且分頁打開。人類有大約350個屬性。我檢查並發現每個Human對象大約需要29000字節。所以總計它應該分配29000 X 120000 = 3.48 GB
我假設這是一個內存問題,程序沒有足夠的內存來完成新的操作。爲什麼。 32 GB不是一個小內存。除Visual Studio運行此C++程序外,沒有任何其他程序正在運行。
請讓我知道你對這個問題的想法和一個可能的解決方案。
非常感謝。
評論不適用於擴展討論;這個對話已經[轉移到聊天](http://chat.stackoverflow.com/rooms/130287/discussion-on-question-by-blue-piranha-c-exception-stdbad-alloc)。 –