|
대체로 C Builder나 MFC에서 제공하는 자료를 다시 재할당하는 작업을 하는 것은 비 합리적입니다.
왜냐하면 C시절에는 그래도 좋았지만 C++이 되면서 배열의 경우 배열의 요소가 생성되고 삭제될때 생성자와 소멸자가 호출됩니다. 그러면 실행 시간이 문제가 됩니다. 물론 개발 툴에서 제공하는 자료형이니 이에 대한 대비는 있을수도 있습니다.
그래도 왠만하면 생성자가 호출되는 자료형은 재할당을 하지 않는 게 좋습니다. 대안으로 malloc를 사용하시면 좋을 듯 합니다.
작은 양의 객체는 물론 다릅니다.(하나의 클래스형 객체, 몇개의 클래스형 배열)
하지만 님의 경우는 900개나 되니 좀 생각해야겠지오
그럼
김진영 님이 쓰신 글 :
: 구리구리 님이 쓰신 글 :
: : 답변 잘 참고 하겠습니다
: : 전 30 * 30 자체를 동적으로 크기를 할당하려고요...
:
: 안녕하세요?
: 2차원 배열은 동적할당이 안됩니다.
: 하지만 2차원 배열은 결국 1차원 배열로 저장되므로 1차원 배열로 바꾸면 되겠죠.
: 간단한 예제를 만들었으니 참고하세요.
: w = 가로, h = 세로, d = 그림 갯수입니다.
: 클래스로 만들면 사용하기 쉽게 다듬을수 있겠죠.
: 그럼 이만...
:
: int h=2, w=3, d=4, cnt=0;
: char *ary, temp;
: ary = new char[h*w*d];
:
: char sample[2][3] = {{'a','b','c'},{'d','e','f'}};
:
: for (int i=0; i<d; i++)
: for (int j=0; j<h; j++)
: for (int k=0; k<w; k++)
: ary[k + (j*w) + (i*h*w)] = sample[j][k];
:
:
: for (int i=0; i<h*w*d; i++) {
: cout << ary[i];
:
: cnt++;
:
: if(cnt%w == 0)
:
: cout << endl;
: else
: cout << " ";
:
: if (cnt%(w*h) == 0) {
: cout << endl;
: cnt = 0;
: }
: }
:
|