2011-07-03 4 views
1

빠른 질문이 있습니다. 나는 C++을 Allegro 라이브러리와 함께 사용하고있다.C++ (Allegro Library) 비트 맵 2 차원 배열 질문

나는 다음과 같은 선언 BITMAP* blocks[600][14];, 그것은 나는 단지 가끔 모든 14 번째 차원의 전부 또는 내가 특별히 배열의 일부를 선언 할 경우에만 사용되는 공간을 사용하고있는 경우 공간을 낭비 될 것입니다 한 경우? 예를 들어

:

BITMAP* blocks[600][14]; 
blocks[0][0] = load_bitmap("brick.bmp", NULL); 
blocks[1][0] = load_bitmap("brick2.bmp", NULL); 

오전 나는 blocks[0][1]를 사용하지 않음으로써 공간을 '낭비', blocks[0][2] 등?

감사합니다.

윌.

답변

3

C++에서 배열은 연속적입니다. 그렇습니다. 사용하지 않으면 추가 요소를 '낭비하고 있습니다.'

그러나 낭비하는 것은 단 하나의 포인터 (64 비트 컴퓨터에서는 8 바이트)입니다. 실제 비트 맵 데이터가 아닙니다. 따라서 600x14 배열에서 BITMAP * 요소 하나만 사용하더라도 ~ 67kB가 낭비됩니다. 현대 데스크톱 컴퓨터에서는 엄청난 양이 아닙니다.

+0

답변 해 주셔서 감사합니다. 나는 11 분 안에 '받아 들여진 대답'으로 표시 할 것입니다 (그것은 그때까지 나를 허락하지 않을 것입니다). –

+0

@Will : 감사합니다 :) – DaveR

+0

답안을 연장해 주셔서 감사합니다. 원래 답변이 마음을 바꿨지 만 확장 프로그램에서 다시 변경되었습니다. –