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(?, ?, ?);
이거... 생각보다 유용하다! 허허허헣헣ㅎ허!
반응형