원본 : http://www.debuglab.com/knowledge/opera ··· ete.html
8. operator new 와 operator delete 작성시 관례를 따른다.
여기서는 operator new를 직접 작성해야만 할 때 그함수가 default new 와 일치하는 동작을 제공 해야 한다는 내용입니다.
->혹시라도 잘못된 양의 메모리를 요청하고 있다면 제대로 할당해 주어야 합니다.
아래 예제가 나갑니다.
Scott Meyers,EffectiveC++
- 2001.08.13 Smile Seo -
8. operator new 와 operator delete 작성시 관례를 따른다.
여기서는 operator new를 직접 작성해야만 할 때 그함수가 default new 와 일치하는 동작을 제공 해야 한다는 내용입니다.
->혹시라도 잘못된 양의 메모리를 요청하고 있다면 제대로 할당해 주어야 합니다.
아래 예제가 나갑니다.
class Base{
public:
static void* operator new(size_t size);
…
};
class Derived:public Base{…};//여기서는 연산자 new를 선언하지 않았습니다.
Derived* p=new Derived;//먼저 Base::operator new를 호출
만일 Base의 operator new 가 이런 상황에 대처하기 위해 설계되지 않으면 잘못된 양의 메모리 요청을 표준 operator new로 전달 합니다. 다음과 같습니다. void* Base::operator new(size_t size)
{
if(size!=sizeof(Base))//size가 잘못 되었으면 표준연산자 new가 요구를 처리하게함
return::operator new(size);
//그렇지 않으면 직접 할당
}
// delete 역시 마찬가지 입니다.
void Base::operator delete(void* rawMemory,size_t size)
{
if(rawMemory==0)return;//널포인터 검사
if(size!=sizeof(Base)){
::operator delete(rawMemory);
return;
}
//그렇지 않으면 직접 해제함
return;
}
-참고 Scott Meyers,EffectiveC++
- 2001.08.13 Smile Seo -
"C++" 카테고리의 다른 글
- 동적으로 할당되는 메모리를 갖는 클래스를 위해서... (0)2007/03/21
- exception 클래스 확장하기 (0)2007/03/21
- operator new 와 operator delete 작성시 관례를... (0)2007/03/19
- 메모리가 모자랄 경우에 대비한다 (0)2007/03/19
- malloc과 free 보다는 new와 delete를 사용한다. (0)2007/03/19

수안이의 컴퓨터 연구실



Leave your greetings.