std::list 上報segmentation fault

有個項目用到了list,用的是標準的list類,封裝在結構體中,如下

typedef struct 
{
  .....
  std::list<T *> tlist;
}tStruct;

在代碼中是這樣用的
tStruct * newst = (tStruct *)malloc(sizeof(tStruct));
T * newElement = (T*)malloc(sizeof(T));
newst->tlist.push_back(newElement);

運行到此處,出錯“segmentation fault”,退出。網上查到是malloc沒有調用list的構造函數。將malloc換成new後解決。

所以要注意c++可以兼容c,但c無法兼容c++,list類是用構造函數實例化的,malloc屬於c標準的簡單的內存分配方式,只支持基本的變量類型,不支持c++的方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章