C++ delete 사용시 더 작은 값으로 delete 하게 된다면...
글쓴이: ikpil / 작성시간: 월, 2008/07/14 - 5:38오전
1.
double *dp = new double;
delete dp;
2.
double *dp = new double;
delete (char *)dp;
2번의 경우도 해체 되었다고 봐도 되나요?
boost 에서 이런 식으로 메모리 해체하던데... 제가 잘못 본것인가..
추가적으로..
1번이나 2번 방법으로 해체 하고,
dp 를 해체 한다 해도 *dp = 3; 넣으면 정상적으로 값이 들어 갑니다;
Forums:


POD(int, char 따위)의
POD(int, char 따위)의 포인터에 대해서는 가능합니다. C++의 operator delete는 들어 온 메모리가 무슨 타입인가를 구분하지 않습니다. 다만 소멸자가 호출되어야 하는 클래스의 경우 소멸자가 제대로 호출되지 않는 문제가 생기겠지요. 어느 쪽이든 권장하긴 힘듭니다.
boost에서 왜 저런 코드를 쓰는 지는 모르겠습니다. 혹시 정확히 어느 코드에서 본 것인지 알려 주실 수 있습니까?