2012-09-03 78 views
-4

我有A類:std ::映射值或指針的操作?

struct A 
{ 
    std::map<int,int> aa; 
} 

和B類:

struct B 
{ 
    std::map<int,B> bb; 
} 

如果這些代碼在一個無限循環:

B b; 
int inx=0; 
while(true) 
{ 
    A a; 
    a.aa[0] = 0; 
    b.bb[inx] = a; 
    ++inx; 
} 

請問導致內存泄漏?
我想要a的所有值複製到b[inx]。我只是想知道這是std :: map指針的實現嗎?

+0

順便說一下,您使用的是「std :: map ',而不是'std :: map '。除此之外,'A'和'B'都不執行'operator []'。 :-) – oldrinb

+0

請發佈一個完整的編譯示例 - 我的代碼中包含很多錯誤 –

+0

對髒代碼抱歉,我會修復它。 :) 但問題是一樣的。 – naive231

回答

0

會造成內存泄漏嗎?

有在你的程序沒有內存泄漏,但一個編譯錯誤,因爲沒有運營商[]定義的結構B.

假設你添加到地圖位置:

while(true) 
{ 
    A a; 
    a[0] = 0; 
    b[inx] = a; 
    ++inx; 
} 

沒有內存泄漏。內存將增加,直到你使用所有int數字,但這是正常的,因爲他們必須存儲在內存中的某個地方。