關於stl::vector中儲存帶指標型別成員的結構體指標
阿新 • • 發佈:2019-01-29
最近用到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需要呼叫拷貝建構函式,所以,結構圖需要實現建構函式和拷貝建構函式。
經過檢視C++ primer ,向vector中push_back需要呼叫拷貝建構函式,所以,結構圖需要實現建構函式和拷貝建構函式。