|
안녕하세요?
이번경우는 dword라 900개정도는 순간적으로 이루어집니다.
1억개쯤 되니 한 2~3초걸리더군요^^
요즘 컴퓨터의 성능을 감안하면 왠만한 클래스라도 900정도는 별 문제가 없을것 같습니다.
그리고 클래스를 melloc으로 할당하면 안됩니다.
필요가 있기 때문에 생성자를 부르는데 안부르면 제대로 할당이 될리 없겠죠.
어차피 생성자를 안쓴다면 new를 사용해도 melloc과 큰 차이가 나진 않습니다.
전 꼭 new를 쓰길 권하고 싶네요.
그럼 이만...
김상면 님이 쓰신 글 :
: 대체로 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;
: : }
: : }
: :
|