이에 대한 얘기를 하기 전에 먼저 특정 문법이 맞는지 틀린지에 대한 논쟁에 대해 어떻게 확인을 할 수 있을까를 느낄 수 있는 간단한 대화부터 소개합니다.
질문: "Who is a winner?"
답변: "I think that the Code is a winner!"
MS초청 세미나 중에서 MS의 개발 이사의 답변...
class hoo { public: hoo(void); ~hoo(void); void *operator new(size_t size) { return (void *)0x1000; } }; hoo::hoo(void) } hoo::~hoo(void) |
그럼 어떨 때 쓸까?
만약, 객체를 할당하고 소멸하는 시간도 아까울 정도의 프로그램을 개발한다고 하자. 그렇다면 미리 충분한 공간을 잡아놓은 뒤에 객체 생성 요청시에 미리 할당된 메모리를 사용한다면 이를 해결할 수 있을 것이다.
아래 자료 참고 - 가비지 켈렉션 하는 구문은 생략했음다.
#include <iostream> using namespace std; using std::cout; using std::endl; class hoo { static int usage; static hoo my_heap[100]; static int nousage; static hoo *garbage[100]; int hoo_id; public: int hoo::usage;
delete hs[0]; delete hs[1]; *참고로 본 예제에서 5개의 개체를 소멸하지 않았지만 메모리 누수는 없지여... |
사견 다른 연산자는 사용하는 패턴에 따라 중복정의를 할 필요가 없는 경우가 많아 개발자에 따라 그리 유용성이 높지 않을 수 있겠지만 new(new [])와 delete(delete[])연산자의 경우는 프로그램의 크기와 중요성이 크면 클 수록 유용성이 높다고 생각합니다.
|
'언어 자료구조 알고리즘 > C언어 예제' 카테고리의 다른 글
적분 공식을 이용하여 파이 구하기 (0) | 2009.08.19 |
---|---|
Visual C++ 표준 라이브러리 헤더파일 (0) | 2009.08.19 |
singed 와 unsigned (1) | 2009.08.19 |
16진수와 2진수 사이의 변환 (0) | 2009.08.19 |
파서트리 (0) | 2009.08.19 |
퀵소트 (0) | 2009.08.19 |
선택정렬 (0) | 2009.08.19 |
삽입정렬 (0) | 2009.08.19 |
정보 올림피아드 (0) | 2009.08.19 |
중복되지 않게 랜덤한 카드 발생 (0) | 2009.08.19 |