我有一個地圖充滿,現在我想完全刪除內存。我該如何做到這一點?找不到任何具體的這個話題,對不起,如果它已經回答了...刪除內存std :: map <int, string>完全刪除內存
我的代碼是這樣的:
for(std::map<short,std::string>::iterator ii=map.begin();
ii!=map.end(); ++ii)
{
delete ⅈ
}
但它不工作。任何人都可以幫忙嗎?
問候, 菲爾
我有一個地圖充滿,現在我想完全刪除內存。我該如何做到這一點?找不到任何具體的這個話題,對不起,如果它已經回答了...刪除內存std :: map <int, string>完全刪除內存
我的代碼是這樣的:
for(std::map<short,std::string>::iterator ii=map.begin();
ii!=map.end(); ++ii)
{
delete ⅈ
}
但它不工作。任何人都可以幫忙嗎?
問候, 菲爾
做是正確的方式是不這樣做。一個map
將自動釋放資源,當它被自動分配的任何東西銷燬時。
除非您將值分配給new
,否則您不需要delete
他們。
{
std::map<short,std::string> x;
x[0] = "str";
}
//no leaks here
{
std::map<short,std::string*> x;
x[0] = new std::string;
delete x[0];
}
只需致電map.clear();
即可。這將釋放地圖在內部分配的所有對象。
請注意,在像任務管理器這樣的系統工具中,應用程序仍然可以顯示相同數量的內存佔用。操作系統完全有可能決定不回收你的進程曾經擁有的內存,以防再次分配它。如果它開始不足,它會在以後收回。
感謝您的回答,但這也沒有幫助。 仍然是相同的MemoryLeak – skylla 2013-04-10 11:32:34
我的地圖是這樣填充的: map [0] =「someString」; 它仍然會給我Mem-Leaks! 如果我不使用我的程序中的地圖,我沒有任何泄漏,所以它一定是我猜的地圖。 – skylla 2013-04-10 11:26:21
@ user1971024好吧... – 2013-04-10 11:27:19
@ user1971024你怎麼知道它有mem泄漏? – Angew 2013-04-10 11:29:12