동적할당 new와 delete

동적할당 new와 delete

main

동적할당 new와 delete

  • C/C++ 에서 메모리 동적 할당이 필요할 때가 있다.

  • 입력에 의한 메모리 할당이 필요할 경우나 메모리를 효율적으로 사용할 필요가 있는 경우 메모리 동적 할당이 필요하다.

  • C의 경우 malloc과 free를 통해 메모리 동적을 할당을 했다.

int main()
{
    int size = 1024;
    int* mem=(int*)malloc(sizeof(int)*size);
    
    mem[0] = 0;
    mem[1] = 1;
    .
    .
    .
    mem[1022] = 0;
    mem[1023] = 1;
    
    free(mem);
    return 0;
}
  • 위와 같이 동적 할당을 해서 힙(heap) 영역을 사용하고 free로 반환을 할 수 있다.

  • C++에서는 new와 delete를 사용할 수 있는데 훨씬 간결하게 사용할 수 있다.

int main()
{
    int size = 1024;
    int* mem = new int[size];
    
    mem[0] = 0;
    mem[1] = 1;
    .
    .
    .
    mem[1022] = 0;
    mem[1023] = 1;
    
    delete []mem;
    return 0;
}
  • 동적 할당하는 사용법이 훨씬 간단해 보인다. new를 사용하여 동적 할당하게 되면 할당된 시작 주소번지를 return하게 된다. 이를 포인트 *mem 변수를 통해 받아서 사용하는 것이다.

  • new로 동적 할당할 때 하나 더 다른 점이 있는데 메모리 할당에 실패하게 되면 NULL을 반환한다는 것이다. NULL은 정수 0과도 같은 의미로 해석된다.

도움이 되셨다면 더 좋은 정보 공유를 위해 광고 클릭 부탁 드립니다 :)

댓글 쓰기

0 댓글