여기서 말하는 형태는 무엇인가?
new 와 delete,  new [] 과 delete [] 를 말한ㄷ.

왜 형태를 맞추어야 하는가?
new 연산은 단일 객체 메모리 잡는 연산자이고 delete 역시 단일 객체 메모리 푸는 연산자이다.
new[] 연산은 객체 배열을 메모리에 잡는 연산자이고 delete[] 역시 객체 배열을 메모리에 푸는 연산자이다.

만약 맞추지 않으면 어떻게 되는가?
new [] 로 객체들 5개를 잡았고 delete 를 이용하면 1개의 객체만 풀어주고 나머지 4개는 프로그램 종료되기 까지 잡고 있는 어처구니 없는 사태가 발생한다.

굳이 주의해야 하는 것은?
typedef 로 typedef std::string addressLines[4] 로 잡은 뒤 std::string *p = new addressLines 한후 delete p 하게 되는 실수가 많은데, 동적으로 잡을땐 이 부분을 확실히 숙지해 두던가, 아예 사용하지 않는 편이 좋겠다.

이것만은 잊지 말자!
1. new, new[] 표현식에 대응하는 delete, delete[] 표현식을 사용 하라!


관련링크
http://ikpil.tistory.com/286
http://sanaigon.tistory.com/7

posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요