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(?, ?, ?);
이거... 생각보다 유용하다! 허허허헣헣ㅎ허!
반응형
'C, C++' 카테고리의 다른 글
[C, C++] Formatting std::string (0) | 2014.03.03 |
---|---|
How to output long long or int64? (2) | 2014.03.03 |
[C++][STL] string documentation. (0) | 2014.01.15 |
[Windows32 API] Dialog 박스와 CreateWindow 같이 쓸 때 (0) | 2013.05.13 |
[C, C++][Windows] 윈도우 종료시 콜스택 [KernelBase.dll 에 첫째 예외가 있습니다] (0) | 2013.05.09 |
[C, C++][스크랩] #pragma warning (0) | 2013.04.18 |
[C++] 64비트 환경과 INT_PTR, int (0) | 2013.02.09 |
[C++] (Exception) std::bad_alloc (0) | 2013.02.07 |
[C++] new 연산자에 대해 (0) | 2013.02.07 |
가상함수가 있는 클래스의 이해와 멤버변수의 일괄 초기화 기법 (0) | 2013.01.13 |