c ++ list分配不规则内存

时间:2013-07-31 03:40:03

标签: c++ list memory-management malloc

如何解决列表内存问题?

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);

1 个答案:

答案 0 :(得分:1)

malloc不构造对象,它只是分配内存,因此preVar对象没有完全构造,访问它会调用未定义的行为。

始终在C ++中使用new !!!