| [ CnUnix ] in KIDS 글 쓴 이(By): dkkang (운디드니) 날 짜 (Date): 2002년 12월 27일 금요일 오전 11시 38분 26초 제 목(Title): class specified new_handler 문제... 아래와 같은 프로그램을 짰는데 컴파일해서 실행해보면 outOfMemory 라는 X클래스에 specified 된 new_handler가 동작하지 않음을 볼 수 있습니다. (vcc, gcc에서 테스트) 왜 그럴까요? 언뜻 보기에 소스에는 그다지 문제가 있어 보이질 않습니다. 아시는 분은 가르쳐주세요~ ^^ 그럼 캄싸해여~ #include <iostream> #include <new> using namespace std; // Effective c++ : Item 7 // set_new_handler example typedef void (*PEHF)(); void outOfMemory() { cerr << "out of memory!" << endl; abort(); } class X { public: static PEHF currentPEHF; static PEHF set_new_handler(PEHF p); void* operator new(size_t size); }; PEHF X::currentPEHF; PEHF X::set_new_handler(PEHF p) { PEHF oldPEHF = currentPEHF; currentPEHF = p; return oldPEHF; } void* X::operator new(size_t size) { cerr << "here!" << endl; PEHF currentHandler = std::set_new_handler(currentPEHF); void* memory = ::new char[size]; ::set_new_handler(currentHandler); return memory; } main() { cerr << "main 2!" << endl; X* px; X::set_new_handler(outOfMemory); px = new X[1000000000]; delete px; } |