전역 operator delete [] 에서 할당 크기 알아내는 법?

jinserk의 이미지

전역 operator delete / delete[] 를 재정의하려고 합니다..
근데 class member 재정의와는 다르게 전역 operator delete / delete[] 는 할당 크기를 알아낼 방법이 없네요.
이리저리 검색해보니 할당크기 앞 4바이트에 크기를 저장한다는 내용을 봤는데,
소멸자가 없으면 이것도 없다.. 는 내용도 있는걸로 봐서 전역에 해당하는 내용은 아닌 듯 하구요.

전역에서 new / new[] 로 할당한 메모리를 delete / delete[] 에선 뭘로 크기를 알아내는지요?

JuEUS-U의 이미지

이 코드를 먼저 보셔야겠습니다.....
아무리 전역이라도 소멸자 호출됩니다.
소멸자는 인스턴스에 할당된 메모리를 해제시키는게 아니라 인스턴스의 내용물을 정리하는 것이고,
메모리의 해제는 소멸자가 끝난 후에 일어납니다.

또 delete []는 앞에 저장된 배열의 길이값(4 byte 값)만큼 반복문을 돌려서
배열의 각 항목에 대해 소멸자를 호출한 뒤
한꺼번에 메모리를 해제시킵니다.

자세한건 어셈블리 코드를 보면 쉽게 이해할 수 있습니다.