#include <iostream.h>
#include <malloc.h>

class EMB
{
  public:
    char Z;
    EMB(int J)
    {
      cout<<J<<endl;    
    }
    void test()
    {
      cout<<"test\n";
    }
    EMB()
    {
      cout<<"생성자\n";
    }
    ~EMB()
    {
      cout<<"소멸자\n";
    }
};

int main()
{
  EMB *P;
  EMB *P2;
  // C++에서의 객체 생성법은 C에서의 
  // 동적할당을 사용하는게 아니라
  // new라는 생성자를 사용하여 객체를 
  // 메모리에 할당 시키는 방법을 사용한다.
  int *iP = new int;
  int *iP2 = new int[3];
  
  
  cout<<"P의 출력"<<endl;
  P = (EMB*)malloc(sizeof(EMB));// 동적할당으론 생성자와
  P->test();                    // 소멸자가 실행되지 않는다.
                                // C에서의 동적 할당법을 사용하지 
                                // 말자는 의미인다.
  cout<<"P2의 출력"<<endl;
  P2=new EMB;
  P2->test(); 
  
  // delete : new에 반대되는 키워드로 메모리에 
  // 레퍼런스를 삭제시켜주면서 소멸자를 생성시킨다.
  delete P2;
  delete iP;
  delete []iP2;  // 지울때 배열은 []로 배열이란 표시를 해줘야 한다.
                // 그렇지  않을 경우 배열의 1개만 삭제를 해주고
                // 나머지는 메모리를 차지하고 있게 된다.
  
  free(P);    
  return 0;
}

+ Recent posts