전역 operator delete [] 에서 할당 크기 알아내는 법?
글쓴이: jinserk / 작성시간: 토, 2009/12/19 - 12:52오전
전역 operator delete / delete[] 를 재정의하려고 합니다..
근데 class member 재정의와는 다르게 전역 operator delete / delete[] 는 할당 크기를 알아낼 방법이 없네요.
이리저리 검색해보니 할당크기 앞 4바이트에 크기를 저장한다는 내용을 봤는데,
소멸자가 없으면 이것도 없다.. 는 내용도 있는걸로 봐서 전역에 해당하는 내용은 아닌 듯 하구요.
전역에서 new / new[] 로 할당한 메모리를 delete / delete[] 에선 뭘로 크기를 알아내는지요?
Forums:
이 코드를 먼저
이 코드를 먼저 보셔야겠습니다.....
아무리 전역이라도 소멸자 호출됩니다.
소멸자는 인스턴스에 할당된 메모리를 해제시키는게 아니라 인스턴스의 내용물을 정리하는 것이고,
메모리의 해제는 소멸자가 끝난 후에 일어납니다.
또 delete []는 앞에 저장된 배열의 길이값(4 byte 값)만큼 반복문을 돌려서
배열의 각 항목에 대해 소멸자를 호출한 뒤
한꺼번에 메모리를 해제시킵니다.
자세한건 어셈블리 코드를 보면 쉽게 이해할 수 있습니다.
댓글 달기