ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C++ 클래스와 동적 메모리 할당
    프로그래밍/C and C++ 2005. 6. 30. 04:55
           3 강 클래스와 동적 메모리 할당

    동적 메모리란 실행 시간에 할당되어 사용되는 메모리 블록을 말한다. C에서는 동적 메모리를 heap이라고 하지만 C++에서는 Free Store라고 부른다. c++의 new 연산자는 자신이 할당하는 오브젝트의 데이터형, 즉 클래스를 알고 있을뿐만 아니라 자동적으로 클래스의 생성자를 호출하여 할당된 메모리를 적절한 값으로 초기화 한다.

     

    Mydata *p;

    p=new Mydata;

    p->DisplayData();

    p=new Mydata(600,700);

    p->DisplayData();

     

    new는 연산자이므로 매개 변수를 필요로 하지 않는다.또한new 연산자는 메모리를 할당할 오브젝트의 크기와 데이터형을 알고 있으므로 그 데이터형의 포인터를 리턴해 준다. new 연산자를 이용하여 다차원 배열을 동적으로 메모리 할당 할 수 있다. 이때 첫번째 배열 요소를 제외한 모든 배열 요소는 반드시 상수이어야 한다.

     

    Int (*multiArray)[10];

    Int length;

    Length=10;

    MultiArray = new int[length][10]; // 2차원 배열의 메모리 할당

     

    delete 연산자는 new 연산자로 free store에 할당된 메모리 블록을 해제시키고, 해제된 메모리 블록을 free store에 돌려준다. delete 연산자는 메모리를 해제하기전에 자동적으로 그 오브젝트의 소멸자를 호출한다.

     

    delete p;

    한번delete한 포인터를 다시 delete할수 없다. 이런 경우 프로그램은 치명적인 에러를 유발한다.

    댓글