C 分配不同大小的 2D 数组



>我有这个:

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 <分配 _x0031_="><16>=8 分配 2 个字节,这样分配 8 个字节 (uint64_t)。

可以做到吗?如何仅使用我的变量数组来做到这一点?

这可能应该是一个评论(或 3),但是...

您需要首先弄清楚

您需要多少字节(以及需要什么,尽管我假设您已经涵盖了该部分。

什么是25?为什么要为 25 个大小为 8、16、32 的不同数组分配内存......2^27?这可能是示例代码,但我们仍然被一个神奇的数字所抛弃:25。我们可以使用常量(或预处理器宏)的名称。

8是另一个神奇的数字,也是有问题的。 sizeof(*array)不能保证为 8。

我也对你的想法有点困惑。当前代码为 a=7 分配 1024 个字节。单个字节如何足以存储您认为需要在原型中分配 1024 字节的任何内容?

相关内容

  • 没有找到相关文章

最新更新