【❌❌vectorの奇技淫巧⭕⭕】C++ vector 如何正确处理动态申请内存的元素
生活随笔
收集整理的這篇文章主要介紹了
【❌❌vectorの奇技淫巧⭕⭕】C++ vector 如何正确处理动态申请内存的元素
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C++ vector 插入動態內存(new、malloc申請的內存)及銷毀動態內存 (delete 、free)demo
我們使用vector時候,有時候會插入一些動態內存數據(例如new出來的指針插入到vector中)。這時候我們一定要注意C++的內存管理,因為C++的內存管理原則,誰申請的,誰銷毀。我們如果不對vector里的指針對應的動態內存進行銷毀操作,直接clear()的話就會造成內存泄露。所以我們需要首先遍歷vector,把vector中元素存儲的指針對應動態內存銷毀掉,然后再clear()掉vector。
demo示例:
#include <vector> #include <iostream> #include <cstring> using namespace std;int main() {vector<char *> obj;//vector中插入動態內存for(int i=0;i<10;i++){char * ptr = new char[100];memset(ptr, 0 , 100);obj.push_back(ptr);}//需要清理申請的動態內存,然后才能清空vector,否則會造成內存泄露for(vector<char *>::iterator it = obj.begin(); it != obj.end(); it++){if(*it != NULL){delete *it;*it = NULL;}}obj.clear();return 0; }番外篇:new char[100]和new char(100)的區別
寫demo的時候,順手寫了new char(100)。。。后面發現不對了。。。哎。。。所以加了個番外篇,記錄一下。
new char[100]和new char(100)的區別,其實這個屬于分配問題,大家使用時還是要注意的,失之毫厘差以千里啊!
詳情如下:
結束寄語
有關vector小細節的介紹就到此結束啦!下篇博文與各位再見面~
寫博不易,如蒙厚愛,賞個關注,一鍵三連~~點贊+評論+收藏🤞🤞🤞,感謝您的支持~~總結
以上是生活随笔為你收集整理的【❌❌vectorの奇技淫巧⭕⭕】C++ vector 如何正确处理动态申请内存的元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 产品经理的肾,是怎么坏的?
- 下一篇: 产品经理口头禅