void Game::Init() {

m_Engine = new Engine();

delete m_Engine; // 뻑남

m_Engine = nullptr;

}


아니 동적할당 하고 메모리 해제하는데 delete m_Engine에서 계속 에러남.

에러코드: Access violation reading location


그래서 계속 디버깅하다가 동적할당 하자마자 메모리 해제하면 어떻게 되나 싶어서 위에처럼 해봤는데 저기서도 delete m_Engine에서 같은 에러 발생함.

Access violation reading location이 할당받지 않은 혹은 할당됐다가 해제된 메모리에 접근할때 발생하는 에러 아님?


참고로 Engine 생성자에서 실행되는거 아무것도 없음.


프로그램 흐름.

1. 아래처럼 동적할당 하고 game->Init() 실행함.

    Game* game = new Game();

    game->Init();


2. Game::Init() 내부. 여기서 동적할당하고 ㅅㅂ 바로 뻑나잖아... 어떡하라는거지
void Game::Init() {
m_Engine = new Engine();
delete m_Engine;
m_Engine = nullptr;
}

설마 동적할당 자체가 안된건가 싶어서 테스트도 해봄.
void Game::Init() {
if (m_Engine == nullptr) {
std::cout << "m_Engine is nullptr\n";
}
m_Engine = new Engine();
if (m_Engine == nullptr) {
std::cout << "m_Engine is nullptr\n";
}
else {
std::cout << "m_Engine is not nullptr\n";
}
delete m_Engine;
m_Engine = nullptr;
}


결과

m_Engine is nullptr

(동적할당)

m_Engine is not nullptr


동적할당도 잘 됨...


진짜 도움이 간절하게 필요하다...