Bonjour à tous,
Je viens de tomber sur un drôle de problème, et j'aurais aimé savoir si quelqu'un a déjà recontré ce cas avec une autre librairie.
Voici un code que j'ai ramené au plus simple :
Si je le compile en tant que projet C++ simple, j'ai une série de zéros qui s'affichent, comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <iostream> int main (int argc, char * argv[]) { unsigned int * a = new unsigned int[16]; for ( unsigned int i = 0; i < 16; i++ ) std::cout << i << " : " << (unsigned int)a[i] << std::endl; return 0; }
Mais si je rajoute au compilateur -lGL pour lier la bibliothèque d'OpenGL et sans rien modifier d'autre dans le code source, j'obtient ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 0 : 0 1 : 0 2 : 0 3 : 0 4 : 0 5 : 0 6 : 0 7 : 0 8 : 0 9 : 0 10 : 0 11 : 0 12 : 0 13 : 0 14 : 0 15 : 0
Et c'est la que je commence à ne plus rien comprendre ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 0 : 841837922 1 : 775106862 2 : 923430771 3 : 909193830 4 : 1701013045 5 : 758132784 6 : 825386551 7 : 1667642678 8 : 808464486 9 : 757953056 10 : 808460400 11 : 808466480 12 : 807415856 13 : 825244216 14 : 892613664 15 : 808530231
Donc j'ai un projet utilisant OpenGL, et là ou je pensais allouer des valeurs à 0, je me retrouve avec de larges buffers pleins de valeurs à la noix, ce qui m'embête légèrement. Je peux toujours remettre des boucles un peu partout, mais je trouve ça tout même bizarre.
L'opérateur new n'est pas censé initialiser les valeurs a 0 en toutes circonstances?
Je suis sur une debian 64, avec le dernier pilote nvidia du site proprio (sans quoi pas de 3D).
Voila, celui qui a une idée![]()
Partager