Probleme avec de gros tableaux

Résolu
gillescpp Messages postés 33 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 22 octobre 2007 - 22 févr. 2005 à 15:50
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 22 févr. 2005 à 18:44
Bonjour,



Voila, c'est en rapport avec un message que j'ai laissé ddans la partie opengl.



Dans ce code, j'y avais ajouté des lignes a inscrire dans un fichier pour me permettre de suivre l'avancement du programme.



En éliminant toutes les lignes, je me suis rendu compte qu'une instruction comme :



coordonnees = (float*)malloc(30000); // fonctionait alors que :

coordonnees=(float*)malloc(30630); //fait planter le programme.

tout comme a l'aide d'un new : Dans les deux cas diférents , les résultats sont les memes.



Autre chose, le programme ne plante pas sur l'allocation mais après et là, je comprends rien du tout.



Merci si vous avez une réponse ou une idee...



Au fait, j'utilise devcpp 4.99.0 (compilateur gcc)



Merci

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 févr. 2005 à 18:44
la oui, malloc(nbr * sizeof(float)) devrait aller mieux.
Ensuite restera à vérifier d'éventuelles erreurs d'accès (index).

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 févr. 2005 à 16:53
coordonnees = (float*)malloc(30000); tableau de 7500 float.
coordonnees = (float*)malloc(30630); tableau de 7657,5 float, BIZZARE !!!

faudrait etre certain de ce que tu veux.

ciao...
BruNews, MVP VC++
0
gillescpp Messages postés 33 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 22 octobre 2007
22 févr. 2005 à 17:30
Ce que je veux dans ce cas là est un tableau 30603 float.



Ta remarque est intéressante. Mais elle ne répond pas a mon probleme.



j'ai modififié ma ligne comme ceci :



sachant que X 101, Y 101, sizeof(float) probablement 4



this->coordonnees = (float*)malloc(X*Y*3*sizeof(float)); // soit au total : 101 * 101 * 3 float.



Pour mieux comprendre, ce tableau garderait en memoire les coordonnees
des points d'une grille. Un autre tableau garde les faces (n° de points
a dessiner) . Tout deux sont destinés a être utilisés avec
opengl. (glDrawElements(...); ). Pour une grille de 100 * 100
cases, il me faut 101*101 coordonnées.



Malgré cette modification, ca ne fonctionne toujour pas.



Merci quand meme



Nicolas
0
Rejoignez-nous