C, C++

C에서 malloc 과 C++에서 new 에 대한 고찰

Binceline 2012. 10. 22. 11:10

malloc과 new의 차이점은 


'생성자를 호출하며 메모리 생성을 하느냐' 

'호출하지 않고 메모리 생성을 하느냐'


의 차이이다.


즉, 클래스에 디폴트 생성자를 만들어 놓지 않고

인자를 여럿 받는 생성자를 만들었는데,

이 클래스 메모리를 배열로 할당받기 위해 더블 포인터로 선언하였을 때!!!


...와 같은 상황이 -_-; 있을 수 있다!!!

그럴 때, 보통 디폴트 생성자를 따로 만들어서, 다음과 같이 개발해야 할 것이다.


CMem** ppMem;

ppMem = new CMem*[5];


for(int i=0; i<5; ++i)

ppMem[i] = new CMem(?, ?, ?);


보통 이렇게 메모리를 받으려 할 것이다.

그래야 배열처럼 쓰게 되니까!!

하지만 


이 때, malloc으로 하면 생성자를 호출할 필요 없이 메모리를 할당받을 수 있으므로,

디폴트 생성자를 만들지 않고도 해결할 수 있다. 다음은 소스코드.


CMem** ppMem;

ppMem = (CMem**)malloc(sizeof(CMem*) * 5);


for(int i=0; i<5; ++i)

ppMem[i] = new CMem(?, ?, ?);



이거... 생각보다 유용하다! 허허허헣헣ㅎ허!

반응형