반응형

동적 메모리 할당

  • 동적 메모리 할당이 필요한 이유
    • 실행 시간에 결정된 크기 만큼의 메모리를 할당하고 싶을때
    • 자동으로 메모리를 해지 하지 말고, 사용자가 원할때 명시적인 해제를 위해
  • C 언어
    • malloc으로 할당하고 free로 해지
    • malloc 사용시 주소를 원하는 타입으로 캐스팅 필요
  • C++ 언어
    • new로 할당하고 delete로 해지
    • 원하는 타입의 주소를 리턴하므로 캐스팅 불필요
    • new 배열로 할당한 경우 delete[]로 해지(배열을 delete로 해지 시 동작에 대해서는 알수없음 undefined)
    • malloc은 생성하지 호출하지 않지만 new는 생성자를 호출함
int main()
{
    int cnt = 0;

    std::cout << "학생수 ? >>";
    std::cin >> cnt;

    // 학생수 만큼의 메모리 할당이 필요하다.
    int score[cnt]; // g++ ok, vc++ error

    // C Style
    int* p1 = (int*)malloc(sizeof(int) * 10);
    free(p1);

    // C++ Style
    int* p2 = new int; // int 사이즈 할당(4Byte)
    delete p2; // 

    int* p3 = new int[10]; // int 사이즈 배열 할당(4Byte * 10)
    delete[] p3; // new Array 타입으로 생성 시 delete[]로 해지
}
반응형

'프로그래밍 언어 > C++' 카테고리의 다른 글

C++ Explicit Casting  (0) 2019.05.06
C++ reference 변수  (0) 2019.05.06
C++ 함수 특징 #2  (0) 2019.05.05
C++ 함수 특징 #1  (0) 2019.05.05
C++ 제어문(if, switch)과 반복문(for)  (0) 2019.01.16

+ Recent posts