我有一个向量,用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.
有人知道为什么会抛出异常吗?
答案 0 :(得分:0)
如果地址错误,我无法访问VS,我希望您的allTestWidgets
为nullptr
。
使用以下代码段轻松演示:
#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;
}