C++ delete 사용시 더 작은 값으로 delete 하게 된다면...

ikpil의 이미지

1.
double *dp = new double;
delete dp;

2.
double *dp = new double;
delete (char *)dp;

2번의 경우도 해체 되었다고 봐도 되나요?
boost 에서 이런 식으로 메모리 해체하던데... 제가 잘못 본것인가..

추가적으로..
1번이나 2번 방법으로 해체 하고,
dp 를 해체 한다 해도 *dp = 3; 넣으면 정상적으로 값이 들어 갑니다;

lifthrasiir의 이미지

POD(int, char 따위)의 포인터에 대해서는 가능합니다. C++의 operator delete는 들어 온 메모리가 무슨 타입인가를 구분하지 않습니다. 다만 소멸자가 호출되어야 하는 클래스의 경우 소멸자가 제대로 호출되지 않는 문제가 생기겠지요. 어느 쪽이든 권장하긴 힘듭니다.

boost에서 왜 저런 코드를 쓰는 지는 모르겠습니다. 혹시 정확히 어느 코드에서 본 것인지 알려 주실 수 있습니까?