[問題] vector 釋放記憶體
想請問各位板友:
現在我知道當vector的元素是指標時,
如果要清空vector要一個一個清掉每個元素,
現在我的資料是像以下的存法:
class CClass{
......
vector<CStudent*> m_student;
};
CStudent類別內的資料是vector<CPhone*> m_phone;
CPhone內的資料是string,
而CClass , CStudent的解構元裡面是用iterator配上for迴圈,
(例如)
vector<CStudent*>::iterator iter = m_student.begin();
依序把元素一個一個delete掉..
--問題來了--
現在程式正常結束時,記憶體(每個元素指向的記憶體)都有正常的釋放掉,
假如現在內容是這樣:(資料都已經存入)
CClass myClass;
如果我現在想刪除單一個元素,已經用iterator指到它了,
然後寫 myClass.erase(iter);
(問題一)
這樣會去呼叫解構元來解構iter指向的元素嗎 ?
(問題二)
erase似乎不會釋放記憶體(vector的大小),
刪除單一元素之後,要如何將所佔的記憶體空間縮小到正確的大小呢?
感謝各位!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.44.89
推
05/09 00:17, , 1F
05/09 00:17, 1F
→
05/09 00:22, , 2F
05/09 00:22, 2F
→
05/09 00:26, , 3F
05/09 00:26, 3F
→
05/09 01:57, , 4F
05/09 01:57, 4F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章