C ++ vector _mylast返回0xC

时间:2017-12-24 14:18:05

标签: c++ vector shared-ptr

我有一个向量,用SFML类(shared_ptr)填充sf::Drawable个。现在有一个函数需要一个新的shared_ptr sf::Drawable并将其添加到向量中。向量声明(它位于名为GUINodeBody的类中,不会被名称混淆):

std::vector<std::shared_ptr<sf::Drawable>>* allTestWidgets;

现在,功能:

void GUINodeBody::addWidget(std::shared_ptr<sf::Drawable> widget) {
    allTestWidgets->push_back(widget);
}

但是当我调用此函数时,Visual Studio会在vector第1731行引发异常:

Reading acess violation
std::_Vector_alloc<std::_Vec_base_types<
    std::shared_ptr<sf::Drawable>,
    std::allocator<std::shared_ptr<sf::Drawable> >
> >::_Mylast**(...) returned 0xC.

有人知道为什么会抛出异常吗?

1 个答案:

答案 0 :(得分:0)

如果地址错误,我无法访问VS,我希望您的allTestWidgetsnullptr

使用以下代码段轻松演示:

#include <vector>
std::vector<int>* allTestWidgets;

void addWidget(int widget)
{
    allTestWidgets->push_back(widget);
}

int main()
{
//  allTestWidgets = new std::vector<int>; This is the fix line
    addWidget(42);
    delete allTestWidgets;
}