vector、map 内存释放
一、vector
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | void?TestVector() { ????cout <<?"begin create vector"?<< endl; ????int?iSize = 10000000; ????vector<int> test_vec; ????for?(int?i = 0; i < iSize; i++) ????{ ????????test_vec.push_back(i); ????} ????cout <<?"create vector end"?<< endl; ? ????Sleep(2*1000); ????cout <<?"clear vector"?<< endl; ????test_vec.clear(); ????cout <<?"clear vector end"?<< endl; ? ????Sleep(1*1000); ? ????cout <<?"after clear new data come if the size bigger"?<< endl; ????for?(int?i = 0; i < iSize; i++) ????{ ????????test_vec.push_back(i); ????} ????cout <<?"new data push_back end"?<< endl; ? ????Sleep(1*1000); ? ????cout <<?"swap vector"?<< endl; ? ????{ ????????vector<int> tmp_vec; ????????test_vec.swap(tmp_vec); ????} ????cout <<?"swap vector end"?<< endl; ? ????Sleep(1*1000); } |
測試過程:
?
?
?
?
結論:
1.?vector clear 之后,內存沒有釋放,但在下次分配時會復用該塊內存。
2. vector swap 空數據之后,會釋放內存。
?
?二、map
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | void?TestMap() { ????cout <<?"begin create map"?<< endl; ????int?iSize = 1000000; ????map<int,?int> test_map; ????for?(int?i = 0; i < iSize; i++) ????{ ????????test_map[i] = i; ????} ????cout <<?"create map end"?<< endl; ? ????Sleep(2*1000); ????? ????cout <<?"clear map"?<< endl; ????test_map.clear(); ????cout <<?"clear map end"?<< endl; ? ????getchar(); ? ????cout <<?"swap map"?<< endl; ? ????{ ????????map<int,?int> tmp_map; ????????test_map.swap(tmp_map); ????} ????cout <<?"swap map end"?<< endl; ????getchar(); } |
測試過程:
?
?
?
結論:
1.?map clear 之后,會釋放內存。
2. map swap 空數據之后,會釋放內存。
https://www.cnblogs.com/SZxiaochun/p/8432817.html
總結
以上是生活随笔為你收集整理的vector、map 内存释放的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这人说的有意思,哈 哈
- 下一篇: C++复制文件夹