创建指针列表的指针时出现访问冲突错误

时间:2016-08-24 06:23:50

标签: c++ pointers visual-c++

i,我试图创建指针列表

的指针

list<ObjectClass*> *lst_testList;

并尝试以这种方式使用

void FunctioningClass::functioningMethod()
{
    ObjectClass *object = new ObjectClass();
    object->i_testing = 234;
    lst_testList->push_back(object);
    object = lst_testList->front();
    cout<<object->i_testing;
    std::getchar();
}

我可以构建程序。但是当我运行它时,它会给我这个错误。

ConsoleApplication7.exe中0x012885DA处的未处理异常:0xC0000005:访问冲突读取位置0x00000004。

注意当我创建像这样的列表时

list<ObjectClass*> lst_testList;

并像这样使用它,

lst_testList.push_back(object);

它没有给我任何错误。

2 个答案:

答案 0 :(得分:3)

list<ObjectClass*> *lst_testList是指向ObjectClass指针列表的指针。为了使用它,你需要先分配它或 (正如您已经发现的那样)使用list<ObjectClass*> lst_testList(这是ObjectClass指针的列表)。

答案 1 :(得分:1)

此类list<ObjectClass*> lst_testList;变量为default-initialized

对于指针list<ObjectClass*>* lst_testList;,不执行默认初始化。正确的初始化是:

list<ObjectClass*>* lst_testList = new list<ObjectClass*>();

list<ObjectClass*>* lst_testList = NULL;

这取决于你的目标。