如何解决列表内存问题?
Data.h
class Data {
public: static Data * instance ;
private:
list<int> preVar;
static Data * createData() ;
};
Data.cpp
Data * Data::instance = Data::createData();
Data::Data() { }
Data * Data::createData(){
Data * tmp = (Data*)malloc(sizeof(Data));
tmp->preVar.clear(); // ERROR
return tmp;
}
调试点是(错误)int list.tcc:__ cur = static_cast&lt; _Node *&gt;(__ cur-&gt; _M_next);
答案 0 :(得分:1)
malloc
不构造对象,它只是分配内存,因此preVar
对象没有完全构造,访问它会调用未定义的行为。
始终在C ++中使用new
!!!