2013-09-23 80 views
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附近。 有沒有辦法告訴剩下多少虛擬內存?

+0

你這樣做的過程會導致'bad_alloc'異常? –

+0

這不僅僅是剩下多少內存*。這也是關於您在上次分配中請求了多少內存。如果你要求4G,那麼當然你會用盡內存,即使「上面列出的號碼不在4G附近」。換句話說,你必須發佈更多關於你想要做什麼的信息。 – AnT

+0

「我遇到了一個bad_alloc()」 - 如果您要求,可能會發生這種情況。 'size_t(-1)'字節,「我認爲每個程序都有4G虛擬內存」 - 這不完全正確。在通常的桌面操作系統中,每個32位程序程序的可用空間至多爲2或3 GB,包括所有內容 - 主要是堆棧,堆棧和代碼區域。這個數量可能會受到操作系統或用戶的進一步限制。 –

回答

0

這部分取決於您的操作系統和硬件。你在運行什麼硬件/操作系統?

+0

這是一條評論,而不是答案 – Manu343726

相關問題