메모리를 동적으로 할당한 뒤에 메모리를 해제시키지 않으면 생성된 메모리는 계속해서 시스템에 남게 된다. 따라서 해당 메모리의 사용이 끝나면 delete나 free를 통하여 메모리를 해제시켜야 한다. 예를 들어 다음 메소드의 경우 메소드가 실행될 때마다 메모리를 새오 할당하게 된다.

void allocateMem(void)
{
  AClass *aClass = new AClass();
  aClass->aMethod();
}

 메소드의 실행이 끝나도 aClass 객체는 메모리에 남게 되는데, aClass 객체를 접근할 길은 끊어지기 때문에 이는 향후 메모리상에 쓰레기가 된다. 따라서 객체의 해제를 확실하게 하거나, 새롭게 생성한 객체를 리턴하여 생성된 객체에 대해 접근할 수 있는 길이 없어지지 않도록 하는 것이 좋다. 예를 들면 다음과 같다.

AClass* allocateMem(void)
{
  AClass *aClass = new AClass();
  aClass->aMethod();
  return aClass;
}

Tags: , ,

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.