Witam, chciałbym się spytać czy poniższy kod w sposób poprawny alokuje tablicę "nieciągłą" i czy po stworzeniu tej tablicy nie wykorzystuje niepotrzebnych, dodatkowych bloków (komórek) w pamięci. Proszę o przeanalizowanie tego krótkiego kodu i rady dot. kodu, jak go zoptymalizować itd.
#include <stdio.h>
void alokuj();
int main() {
int komorki=5;
alokuj(komorki);
return 0;
}
void alokuj(int komorki) {
int **matrix=(int**)malloc(komorki * sizeof(int*));
for(int i=0;i<komorki;i++) {
matrix[i]=(int*)malloc((komorki - i) * sizeof(int));
}
for(int j=0;j<komorki;j++) {
for(int k=0;k<komorki-j;k++){
matrix[j][k]=2;
}
}
for(int j=0;j<komorki;j++) {
for(int k=0;k<komorki-j;k++){
printf("%d",matrix[j][k]);
}
printf("\n");
}
}