我有这个:
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 和 >=8 分配 2 个字节,这样分配到 8 个字节(uint64_t)。
有可能这样做吗?我怎么能只使用我的变量数组来做到这一点?