벡터가 SFML 클래스 (sf::Drawable
)의 shared_ptr
으로 채워져 있습니다. 이제 새로운 shared_ptr
을 sf::Drawable
으로 가져와 벡터에 추가하는 기능이 있습니다. 벡터 선언 (가 GUINodeBody
라는 이름의 클래스 내에, 이름으로 혼동되지 않음) : 이제C++ 벡터 _mylast가 0xC를 반환했습니다
std::vector<std::shared_ptr<sf::Drawable>>* allTestWidgets;
, 기능 :
void GUINodeBody::addWidget(std::shared_ptr<sf::Drawable> widget) {
allTestWidgets->push_back(widget);
}
하지만이 함수를 호출, 비주얼 스튜디오 예외가 던져 질 수있는 이유
이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.
아무도 알고 있나요 : vector
에서 예외 라인 1731을 던져?
쉽게 그. 코드의 어딘가에 버그가 있기 때문에 예외가 발생합니다. 버그는 어디에서나 발생할 수 있습니다. 프로그램이이 줄에서 충돌하기 만해도 버그가있는 곳이 아닙니다. 예를 들어, 유효하지 않은 포인터에 쓰기가 성공하지만 메모리가 손상됩니다. 이 프로그램은 손상된 메모리를 사용하려고 시도 할 때까지 계속 실행되며 충돌합니다. 버그가 코드에서 어디에 있는지 파악하고 수정해야합니다. [mcve]의 모든 요구 사항을 충족하는 예를 제시 할 수있는 경우 [도움말]에서 설명한대로 질문을 편집하고 포함 할 수 있습니다. –
화재가 발생하기 전에 연기에 대처하는 방법 :'allTestWidgets'가 왜 포인터입니까? – Quentin
@Quentin 다른 클래스로 옮겨 다니는 것이 더 편리 할 것이라고 생각 했으므로 – Ben