2014-02-14 53 views
0

我有一個無序映射,我想測量它在程序中消耗多少內存。 的unorderedmap是這樣的:以字節爲單位的無序映射大小

Key => int, int 

Value => int, bool 

我想找出以字節爲單位的地圖大小。 我正在利用.size()函數來找出容器中元素的數量(地圖中的行數)。我正在計算這樣的無序圖的大小

unordermap.size() * (2bytes+2bytes+2bytes+1byte) 

這是正確的方式來估計unordermap消耗的內存以字節爲單位嗎?

+1

不知道C++是否有這種情況,但應該有類似於對象開銷的東西,這是默認情況下對象在內存中佔用的大小。這也應該考慮在內。 C++有'sizeof'運算符,您也可以使用它來確定您是否正確 – smac89

+0

@ Smac89'sizeof'運算符是靜態大小。它沒有考慮集合中元素的大小。 – Adam

+0

這是真的,但至少分別使用'sizeof(int)'和'sizeof(bool)'而不是'2'和'1'只能改善事情 –

回答

0

數據結構的內存佔用空間是堆棧大小+自由存儲大小。您可以重新定義運算符new/delete來添加分配的大小會計,然後執行簡單的算術運算。你也可能需要做malloc/free。

相關問題