簡體   English   中英

C ++異常:std :: bad_alloc

[英]C++ exception: std::bad_alloc

為簡單起見,請考慮具有3個屬性的此類。

class Human
{
   public:
     int id;
     int age;
     std::string name;
};

int main()
{
Human *h = new Human[120000]; <-- breaking
    return 0;
}

我收到的錯誤是Human.exe中0x76ACC52F的未處理異常:Microsoft C ++異常:內存位置0x000D0EA8的std :: bad_alloc。

運行該程序的計算機具有32 GB RAM和1 TB硬盤驅動器(具有分頁功能)。 人類類具有約350個屬性。 我檢查發現,每個Human對象大約占用29000個字節。 因此總計應該分配29000 X 120000 = 3.48 GB

我假設這是一個內存問題,程序沒有足夠的內存來完成新操作。 通過為什么。 32 GB不是小內存。 除了運行此C ++程序的Visual Studio之外,沒有其他任何程序正在運行。

請讓我知道您對此事的想法和可能的解決方案。

非常感謝你。

因此,如注釋中所示,以64位編譯可以解決此問題,但是您可能應該使用鏈接列表而不是數組,因為它不需要連續的內存塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM