C++ Study 0002

C++언어 공부 0002

메모리의 동적 할당

동적 메모리

  • 프로그램 실행 중에 동적으로 메모리를 할당받는 것이다.
  • 필요한 만큼 할당 받으므로, 효율적으로 사용할 수 있다.
  • 사용이 끝나면 시스템에 메모리 공간을 반납해야 한다.
  • newdelete 키워드를 사용한다.
  • 사용 방법
int *pi = new int; // 하나의 int형 공간 할당
int *pia = new int[100]; // 크기가 100인 int형 동적배열 할당
double *pd = new double; // 하나의 double형 공간 할당
double *pda = new double[100]; // 크기가 100인 double형 동적배열 할당

delete pi; // 동적 할당한 int형 공간 반납
delete[] pia; // 동적 할당한 배열 반납
delete pd; // 동적 할당한 double형 공간 반납
delete[] pda; // 동적 할당한 배열 반납

C에서의 동적 메모리

  • C에서도 메모리의 동적 할당이 가능한데, 방법이 살짝 다르다.
  • newdelete 키워드 대신, mallocfree 키워드를 사용한다.
  • 사용 방법
int *pi = (int *)malloc(sizeof(int)); // 하나의 int형 공간 할당
int *pia = (int *)malloc(sizeof(int) * 100); // 크기가 100인 int형 동적배열 할당
double *pd = (double *)malloc(sizeof(double)); // 하나의 double형 공간 할당
double *pda = (double *)malloc(sizeof(double) * 100); // 크기가 100인 int형 동적배열 할당

free(pi); // 동적 할당한 int형 공간 반납
free(pia); // 동적 할당한 배열 반납
free(pd); // 동적 할당한 double형 공간 반납
free(pda); // 동적 할당한 배열 반납

C++ 동적 메모리 예제

#include <iostream>
using namespace std;

int main()
{
    int *pi; // 동적 메모리를 가리키는 포인터

    pi = new int[100]; // 동적 메모리 할당

    for(int i=0; i < 100; i++)
        *(pi+i) = 0; // 동적 메모리 사용

    delete[] pi; // 동적 메모리 반납

    return 0;
}

Reference

0%