Je crée un tableau dans C
d'une taille connue qui ne change jamais. Quelle est la différence entre les deux initialisateurs suivants ?
1.
GLuint boxArray[36];
for (GLuint i=0; i<36; i++)
{
boxArray[i] = i;
}
2.
GLuint boxArray[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35};
Lorsque j'intervertis les deux méthodes ci-dessus, seule la première fonctionne dans mon code. L'inspection des tableaux eux-mêmes semble très similaire (la seule différence étant que la deuxième méthode a des valeurs nulles pour deux éléments AU-DELÀ de la fin du tableau).
J'utilise le code suivant pour inspecter le tableau juste après l'avoir créé...
for (int j=0; j<39; j++) {
NSLog(@"boxArray[%d] = %d", j, boxArray[j]);
}
Les deux résultats sont identiques, à la petite différence près. J'écris volontairement au-delà de la fin du tableau afin d'inspecter les différences à cet endroit.
Je place ensuite le tableau dans un objet NSData qui est une variable d'instance de l'objet dans lequel se trouve ce code.... comme suit...
_boxArrayData = [NSData dataWithBytes:boxArray length:sizeof(boxArray)];
Je peux inspecter les données de l'autre côté lorsque je retire les données de l'objet NSData et elles semblent identiques. Cependant, lorsque j'utilise les données (il s'agit d'un simple tableau d'index pour OpenGLES2.0), j'obtiens des résultats différents.