私はこれを持っています:
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) に割り当てます。
それは可能ですか?変数配列だけを使用してそれを行うにはどうすればよいですか?