J'ai trouvé un moyen intéressant d'allouer des matrices en C qui permet l'utilisation de [i][j]
sans initialiser comme double matrix_a[nrows][ncols]
. L'allocation estType spécifique gratuit d'allocation de mémoire en C
double (*matrix_a)[ncols] = (double (*)[ncols])malloc(sizeof(double) * (nrows) * (ncols));
Mais je ne trouve pas comment libérer correctement ce type d'allocation. Serait-ce aussi simple que free(matrix_a)
?
Ce qui est unique dans cette répartition? Attribution typique + cast. –
C'est unique dans le sens où je ne l'ai jamais vu auparavant. J'ai manqué de mémoire avec une allocation assez rapide avec 'double matrix_a [nrows] [ncols]' et j'ai trouvé ce style à la recherche de méthodes plus efficaces. – mjswartz
Vous venez d'allouer de la mémoire sur le tas. 'double a [m] [n]' alloue sur la pile, et la pile est plus limitée que heap (typiquement). Il n'y a rien de spécial ici. –