Je suis nouveau dans le domaine de l'objectif-c et je fais quelque chose qui fonctionne pour le moment, mais j'ai peur que cela ne se brise un jour.
Dans un de mes objets, je déclare une matrice d'entiers comme variable d'instance. Comme je ne connais pas encore la taille de la matrice, je l'ai déclarée comme ceci :
int **_matrix;
Plus tard dans le code, lorsque je connais le nombre de lignes et de colonnes de ma matrice, je l'initialise comme ceci :
_matrix = malloc(sizeof(*_matrix) * columns * lines);
for (i = 0; i < columns; i++) {
_matrix[i] = malloc(sizeof(int) * lines);
for(j = 0; j < lines; j++)
_matrix[i][j] = -1;
}
En supposant que mon allocation est correcte (n'hésitez pas à me dire si elle est erronée), puis-je accéder en toute confiance aux éléments en utilisant la syntaxe des tableaux à deux dimensions ?
Je pose la question parce que, d'après ce que j'ai lu, lorsque vous créez un tableau à deux dimensions, la mémoire est réservée en permanence, mais ce n'est peut-être pas le cas lorsque vous utilisez des pointeurs doubles. Je crains donc que l'appel à
_matrix[i][j]
pointerait en fait vers un endroit aléatoire de la mémoire (et non vers l'endroit que j'ai alloué).
Merci pour vos réponses !