[英]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.