2011-07-03 57 views
1

我有一個簡單的問題。我正在使用C++和Allegro庫。C++(Allegro庫)位圖二維數組問題

如果我做出以下聲明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

感謝您的答案的延伸,非常有用!你原來的回答改變了我的想法,但是你的擴展改變了它! –