I이 있습니다 : 나는 2^비트를 사용합니다 최악의 시나리오에서는 2 차원 배열 다른 크기를 할당 C
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");
}
}
, 그것은 의미, 난 항상 이것에 대한 uint64_t 사용해야하고, UINT하지 않습니다 조차. 내 생각은 < 8에 대해 1 바이트를 할당하고 < 16 바이트를 2 바이트,> = 8로 8 바이트 (uint64_t)로이 바이트를 할당합니다.
그렇게 할 수 있습니까? 변수 배열을 사용하여 어떻게 할 수 있습니까?
저는 질문을 잘 이해하지 못합니다. 비트 배열 (개별 비트를 저장하기 위해)을 할당하려고합니까, 아니면 할당 문제가 걱정 되십니까? – LiraNuna
최악의 경우 @Frederico는'2^(a + 3)'바이트가 아닌'2^a' 비트를 사용하고 있습니다. malloc은 비트가 아닌 바이트 단위로 할당하므로 – keety
@LiraNuna가 이상하게 생각합니다 할당 –