1. 程式人生 > >關於stl::vector中儲存帶指標型別成員的結構體指標

關於stl::vector中儲存帶指標型別成員的結構體指標

最近用到vector中儲存結構體: struct sProc { // 程序ID int pid; // 程序狀態 int stat; // 狀態為0次數 int count; char *path; sProc() { pid = -1; stat = 0; count = 0; path = NULL;  //關鍵在此出 } }; 宣告一個vector如下: vector<sProc*> list; sProc* p = new sProc; 在非除錯模式下呼叫list.push_back(p);出現記憶體不可讀的錯誤。折騰了半天,才發現,vector在構造時,不會給指標型別成員分配空間。把結構體修改一下就可以了: struct sProc { // 程序ID int pid; // 程序狀態 int stat; // 狀態為0次數 int count; char *path; sProc() { pid = -1; stat = 0; count = 0; path = new char[41];  //關鍵在此出 } };
經過檢視C++ primer ,向vector中push_back需要呼叫拷貝建構函式,所以,結構圖需要實現建構函式和拷貝建構函式。