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 :

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;
}
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
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
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 : 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
Et c'est la que je commence à ne plus rien comprendre ...

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