C++의 new, delete 연산자 중첩시키기
C++에서 new, delete 연산자의 중첩은 어떻게 하는가요?
그리고 new나 delete 뒤에 배열첨자가 붙은 경우(그러니까 특정
변수나 객체의 배열을 할당/해제하는 경우)의 연산자중첩은
어떻게 되나요?
참고로 그냥 new만 쓴 경우의 연산자 중첩시 사용하는 원형은
void *operator new(size_t);
이었더라고요. 물론 gcc에서입니다.
이번에 제게 malloc()을 B-트리나 trie를 이용해서 좀 속도 빠르게
구현하고 C++의 new와 delete가 그 함수 쓰도록 만들려고
하는데 좀 여쭈어 봅니다.
그리고 glibc의 malloc()은 정말 맘에 안들더군요.
소스 보시면 알겠지만 linked list를 일일이 뒤지는 방식이에요. ㅜ.ㅜ
속도도 별볼일 없다 하고. g++의 new는 아마 이걸 이용했겠지요.
참고로 아래는 new 연산자 중첩 예제입니다.
#include
#include
class Overnew {
private
int b;
int c;
public
Overnew();
void *operator new (size_t);
void test(void);
};
OvernewOvernew()
{
b=10;
c=20;
}
void *Overnewoperator new (size_t size)
{
printf("Overiding new operator\n");
void *temp = malloc(size);
return temp;
}
void Overnewtest(void)
{
printf("%d %d test ok...\n",b,c);
}
main()
{
Overnew *over = new Overnew;
over->test()
}
operator new[], operator delete[]를 쓰세요(내용無)
내용無
댓글 달기