프로그램/C,C++

[C++ 기본 2] 2. memory allocation

naudhizb 2022. 1. 29. 23:39
반응형
// 2_메모리할당 - 52 page
#include <iostream>
//            malloc             new
//          함수                 연산자
//            void* 반환         정확한 타입으로 반환
//            free 해지         delete 해지
//            생성자 호출안됨     생성자 호출
//            실패시 0반환         실패시 예외 발생
int main()
{
    // C 스타일
    int* p = (int*)malloc(sizeof(int) * 20);
    free(p);

    // C++ 스타일
    int* p2 = new int;
    delete p2;

    int* p3 = new int[20]; // 배열로 할당
    delete[] p3;    // delete 가 아니라 delete[] 로 반환
    //delete p3;  // undefined(미정의 동작) 발생
}

객체 지향 언어인 C++에서는 malloc 뿐만 아니라 new로 동적 메모리 할당을 수행할 수 있다. malloc은 free로, new는 delete로 해제할 수 있으면 new의 경우 생성자를 호출하고 실패시 예외를 발생시킨다.

반응형