Probleme d'allocation dynamique de la memoire en C

Résolu
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 31 juil. 2005 à 16:48
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 31 juil. 2005 à 18:31
Bonjour,

Je developpe sous devcpp et dans ce prog je créé un tableau de sommets de taille variable que j'affiche avec opengl.

la structure d'un sommet est:
typedef struct vertex
{
float x;
float y;
float z;
};

ensuite je créé un pointeur de type vertex* :
vertex*mapVertex;

au lancement du prog je fais:
mapVertex=(struct vertex*)malloc(numVertex*sizeof(struct vertex));

puis des que le nombre de vertex diminue au augmente ( je fais diminuer ou augmenter ce nombre grace a 2 touche du clavier), je modifie la taille de mon tableau avec :

realloc(mapVertex,numVertex*sizeof(struct vertex));

cela marche bien quand le nombre de vertex diminue, mais des que le nombre de vertex depasse la valeur initiale (au lancement du prog) ca plante et la fementre se ferme brutalement ou alors windows me dit qu'il a rencontré un probleme avec mon prog ( j'y peux rien moi si mon prog depasse windows...)

Quelqu'un peut il m'expliquer ou est mon erreur?
dois je me mettre au C++ et utiliser les listes chainées?

3 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
31 juil. 2005 à 17:31
Plutot que realloc tu devrais faire un nouveau malloc et détruire l'ancien
3
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
31 juil. 2005 à 16:56
et je precise qu'il n'ya pas de fuite de memoire...
Mon prog prend environ 10 Mo dans la memoire cettre taille varie faiblement en fct du nombre de vertex entre 9 et 11 Mo et meme la ca plante!

D'apres le gestionnaire de taches...
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
31 juil. 2005 à 18:31
oui c'est ce que j'ai fait et ca focntionnne! mais ca resoud partiellemtn le prb parce que je perd toute les données contenues dans l'ancien tableau

Mais bon pour mon appli c'est pas grave puisque je dois tout recalculer...
0