IT Story/Programming Language
Visual Studio 에서 재미있는 delete 현상
soyoja
2009. 3. 25. 17:25
반응형
Visual Studio 에서 빌드 중 재미있는 현상을 하나 발견하였다.
위의 코드는 VS6.0 / VS 2005 / VS 2008 모두 디버그 모드에서는 Assertion Failed 에러를 보고하지만 Release 모드에서는 정상적으로 실행된다.
C++ 의 명저인 Effective C++ 의 항목 10 에서는 "new 를 썼을 때 delete 를 써라"(Item 10: Write operator delete if you write operator new. ) 는 내용을 명시하고 있다. 뭐 C++ 에 있어서 가장 기본적인 부분이라 할 수 있다.
위에서는 new 를 써서 동적으로 할당하지 않은 객체인 dat 를 delete 하려고 시도하고 있기 때문에 Visual Studio 컴파일러에서 Debug Assertion Failed 에러를 발생시킨다.
이런 코드가 release 모드에서 정상적으로 실행되는 것도 이상하다. 하다못해 컴파일러가 warning 이라도 띄워주는 것이 맞지 않을까 싶다.