1
我遇到了bad_alloc()異常。然後,我將gdb附加到它並稱爲malloc_stats():如何確定爲我的程序留下了多少虛擬內存?
Arena 0:
system bytes = 171241472
in use bytes = 171061480
Arena 1:
system bytes = 335872
in use bytes = 334296
Total (incl. mmap):
system bytes = 1532186624
in use bytes = 1532005056
max mmap regions = 44
max mmap bytes = 1561939968
Arena 0,1是什麼意思? 這是否意味着我用完了所有的記憶?這是否意味着我絕對有內存泄漏somwhere? 我認爲每個程序都有4G虛擬內存,上面列出的數字都沒有在4G附近。 有沒有辦法告訴剩下多少虛擬內存?
你這樣做的過程會導致'bad_alloc'異常? –
這不僅僅是剩下多少內存*。這也是關於您在上次分配中請求了多少內存。如果你要求4G,那麼當然你會用盡內存,即使「上面列出的號碼不在4G附近」。換句話說,你必須發佈更多關於你想要做什麼的信息。 – AnT
「我遇到了一個bad_alloc()」 - 如果您要求,可能會發生這種情況。 'size_t(-1)'字節,「我認爲每個程序都有4G虛擬內存」 - 這不完全正確。在通常的桌面操作系統中,每個32位程序程序的可用空間至多爲2或3 GB,包括所有內容 - 主要是堆棧,堆棧和代碼區域。這個數量可能會受到操作系統或用戶的進一步限制。 –