簡體   English   中英

C 分配不同大小的二維數組

[英]C allocate 2D array different sizes

我有這個:

uint64_t **array;
int a;

if((array = malloc(8 * 25)) == NULL){
    errx(1, "malloc");
}

for(a = 0; a < 25; a++){
    if((array[a] = malloc(8 * (1 << a))) == NULL){
        errx(1, "malloc 1");
    }   
}

在最壞的情況下,我將使用 2^a 位,這意味着,我並不總是需要為此使用 uint64_t,甚至不需要使用 uint。 我的想法是為 < 8 分配 1 個字節,為 < 16 和 a >=8 分配 2 個字節,這樣就分配給 8 個字節 (uint64_t)。

有可能這樣做嗎? 我如何僅使用我的變量數組來做到這一點?

這可能應該是一條評論(或 3 條),但是......

您需要首先確定您需要多少字節(以及需要多少字節,盡管我假設您已經涵蓋了這一部分。)

什么是 25? 為什么要將 memory 分配給大小為 8、16、32...2^27 的 25 個不同的 arrays? 這可能是示例代碼,但我們仍然被一個神奇的數字所迷惑:25。我們可以使用常量的名稱(或預處理器宏)。

8 是另一個神奇的數字,它也有問題。 sizeof(*array)不保證為 8。

我也對你的想法有點困惑。 您當前的代碼為 a=7 分配了 1024 個字節。 單個字節如何足以存儲您認為需要在原型中分配 1024 字節的任何內容?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM