Ich habe dies:C verschiedenen Größen 2D-Array zuweisen
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");
}
}
Im schlimmsten Szenario I 2^a Bits verwenden werden, bedeutet es, ich weiß nicht immer dafür verwenden müssen uint64_t und uint sogar. Meine Idee ist nur 1 Byte für eine < 8, 2 Bytes für eine < 16 und a> = 8 und damit auf 8 Bytes (uint64_t) zuzuweisen.
Ist das möglich? Wie kann ich das nur mit meinem variablen Array tun?
Ich verstehe die Frage nicht ganz: Versuchen Sie, ein Bit-Array zu reservieren (um einzelne Bits zu speichern) oder sind Sie nur besorgt über Überbelegung? – LiraNuna
@ Frederico Hinweis im schlimmsten Fall Sie verwenden '2^(a + 3)' Bytes und nicht '2^a' Bits malloc alloziert in Bytes nicht Bits, so würde dies nicht wie erwartet funktionieren – keety
@LiraNuna nur besorgt über über Zuteilung –