[C++] 동적 메모리 할당 예제 new delete

2019. 7. 27. 20:52 기타/C++

[C++] 동적 메모리 할당 예제 new delete


변수와 배열을 동적으로 할당하고 해제할 수 있다.


동적으로 할당한 변수는 반드시 해제해줘야 한다.



함수에서 선언된 변수는 함수가 종료되면서 같이 자동으로 해제되지만,

동적으로 할당한 변수는 해제되지 않고 직접 해제해줘야 한다.


new : 변수 동적 할당

delete : 동적 할당 변수 해제


new[] : 배열 동적 할당

delete[] : 동적 할당 배열 해제

#include <iostream>
using namespace std;


int main(){

    // int 타입 동적 메모리 할당
    int* p = new int;

    *p = 337;

    cout << *p << endl;

    // 메모리 해제
    delete p;
   p=NULL;

    // 배열 동적 메모리  할당
    int length = 10;
    int* q = new int[length];

    q[0] = 4;

    cout << q[0] << endl;

    // 배열 메모리 해제
    delete[] q;
   q=NULL;

    return 0;
}


delete를 이용해 메모리를 해제하면, 해당 포인터 변수를 NULL로 초기화 해줘야 한다.


delete가 되어도 포인터 변수에는 기존의 주소를 가지고 있어, 다른 곳에서 잘못 사용될 수 있다.



출처: https://hyeonstorage.tistory.com/301?category=601868 [개발이 하고 싶어요]