본문 바로가기

SW 개발 공부/실수 기록

C#과 C++ 동적 할당 차이 (다른 new 사용법)

 

C#과 C++에서 변수 선언에 사용되는 new는 다른 형식으로 사용된다.

 

C#의 경우, 선언한 변수를 객체로서 사용할 수 있다.

C#

byte[] a = new byte[3];

위의 경우, a는 3개의 byte형을 갖는 배열의 객체로 선언된다.

그에따라 .length 와 같은 프로퍼티를 접근하여 사용 가능하다.

또한 자동으로 가비지 컬렉터에 의하여 메모리가 해제된다.

 

C++의 경우는, new 로 특정 배열을 선언시 해당 배열을 할당하고 그것의 주소를 포인터로 반환한다.

따라서 기본적으로 new로 선언한 부분의 앞부분은 포인터여야만 한다.

C++

byte* a = new byte[3];

a는 자동으로 제거되지 않기에 delete [] 를 사용하여 메모리를 해제해줘야 한다.