1. double *dp = new double; delete dp;
2. double *dp = new double; delete (char *)dp;
2번의 경우도 해체 되었다고 봐도 되나요? boost 에서 이런 식으로 메모리 해체하던데... 제가 잘못 본것인가..
추가적으로.. 1번이나 2번 방법으로 해체 하고, dp 를 해체 한다 해도 *dp = 3; 넣으면 정상적으로 값이 들어 갑니다;
POD(int, char 따위)의 포인터에 대해서는 가능합니다. C++의 operator delete는 들어 온 메모리가 무슨 타입인가를 구분하지 않습니다. 다만 소멸자가 호출되어야 하는 클래스의 경우 소멸자가 제대로 호출되지 않는 문제가 생기겠지요. 어느 쪽이든 권장하긴 힘듭니다.
boost에서 왜 저런 코드를 쓰는 지는 모르겠습니다. 혹시 정확히 어느 코드에서 본 것인지 알려 주실 수 있습니까?
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
POD(int, char 따위)의
POD(int, char 따위)의 포인터에 대해서는 가능합니다. C++의 operator delete는 들어 온 메모리가 무슨 타입인가를 구분하지 않습니다. 다만 소멸자가 호출되어야 하는 클래스의 경우 소멸자가 제대로 호출되지 않는 문제가 생기겠지요. 어느 쪽이든 권장하긴 힘듭니다.
boost에서 왜 저런 코드를 쓰는 지는 모르겠습니다. 혹시 정확히 어느 코드에서 본 것인지 알려 주실 수 있습니까?
댓글 달기