0

如何解决列表内存问题?

数据.h

    class Data {
        public: static Data * instance ;    
        private: 
            list<int> preVar;
            static Data * createData() ;
    };

数据.cpp

Data * Data::instance = Data::createData();
Data::Data() { }

    Data * Data::createData(){                  
        Data * tmp = (Data*)malloc(sizeof(Data));
        tmp->preVar.clear();     // ERROR
        return tmp;
    }

调试点是 (error) int list.tcc : __cur = static_cast<_Node*>(__cur->_M_next);

4

1 回答 1

1

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

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

于 2013-07-31T03:41:52.613 回答