Probleme avec de gros tableaux [Résolu]

Signaler
Messages postés
33
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
22 octobre 2007
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
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

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

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++
Messages postés
33
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
22 octobre 2007

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