Allocation Mémoire pour tableau 2 dimensions - C - Programmation
Marsh Posté le 23-11-2015 à 11:51:23
La méthode plus pédagogique mais moins optimale (101 appels à malloc) est la suivante:
Code :
|
La méthode la plus optimale (2 appels à malloc seulement) est la suivante:
Code :
|
Noter aussi qu'avec cette dernière méthode, tous les doubles sont rangés dans une zone contiguë en mémoire, comme ce serait le cas si on avait un vrai tableau.
Dans les deux cas, on alloue nb_sp * (sizeof(double*) + 100 * sizeof(double)) octets. On alloue donc nb_sp * sizeof(double*) octets de plus (ie la première allocation) que pour un vrai tableau.
A+,
Marsh Posté le 23-11-2015 à 18:48:31
Note qu'on peut faire encore mieux, en passant tout à une fonction, et avec une seule allocation:
Code :
|
La fonction fait une allocation unique (on colle les pointeurs en premier et les données derrière), et le gros avantage, c'est qu'un unique free suffit à libérer la mémoire.
On peut généraliser, mais ça devient vite complexe:
Code :
|
A+,
Marsh Posté le 22-11-2015 à 19:16:17
Bonjour,
Quelqu'un pourrait m'aider.
je souhaite initier un tableau de type
double** abondances_s_tab [nb_sp] [100];
etat.nb_sp se situant dans une structure est une variable non fixe. je veux donc faire une allocation de mémoire dynamique pour la première dimension.
J'ai essayé de faire quelque chose comme ça mais rien de concluant.
Quelqu'un peut m'aider ?
Merci d'avance.
Bien cordialement.
Axelle DURAND