Diskuze: Dynamická alokace, dealokace 2D pole ve funkci
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 2 zpráv z 2.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Důvodem je priorita operátorů. Operátor indexace [] má vyšší prioritu nežli operátor dereference *. Tedy ukazatel na pole (*p)[] vs pole ukazatelů *p[].
void allocate_2D(int*** p, int r, int s) {
*p = (int**)malloc(sizeof(int*) * r);
for(int i = 0; i < r; i++) {
(*p)[i] = (int*)malloc(sizeof(int) * s);
}
}
void free_2D(int*** p, int r) {
for(int i = 0; i < r; i++) {
free((*p)[i]);
}
free(*p);
*p = NULL;
}
Zobrazeno 2 zpráv z 2.