Access Violation en écriture - C++ - Programmation
Marsh Posté le 01-01-2011 à 19:58:16
tu as probablement un écrasement mémoire. n est-il valide et inférieur à la taille de ton array ? garray est-il valide aussi ? Ton écrasement mémoire peut se trouver à peu près n'importe où, c'est une chose assez difficile à debugger surtout si le code est gros.
Marsh Posté le 01-01-2011 à 20:02:06
xilebo a écrit : tu as probablement un écrasement mémoire. n est-il valide et inférieur à la taille de ton array ? garray est-il valide aussi ? Ton écrasement mémoire peut se trouver à peu près n'importe où, c'est une chose assez difficile à debugger surtout si le code est gros. |
Vi, garray est en global, ensuite y'a une fonction d'initialisation "garray = new vector<animstruct>;" qui est mise dans la fonction main, aussi il est automatiquement resizé lorsqu'un nouvel array doit être chargé
Marsh Posté le 01-01-2011 à 20:10:13
vérifie avec un debugger la valeur de l'adresse "(*garray)[n].anim" à un moment où tu es sur qu'elle est valide, ensuite , au moment de l'affectation, et enfin au moment du plantage ( en debug). Si l'adresse a changé c'est que tu as un écrasement mémoire qui t'invalide cette adresse.
Marsh Posté le 01-01-2011 à 21:14:11
ReplyMarsh Posté le 01-01-2011 à 21:32:31
Joel F a écrit : global dans un DLL == drame en perspective |
Pas forcément, à la base j'me servais d'une variable global pour remplir mon tableau, et ça marchait niquel (mais qu'une seule animation quoi )
Marsh Posté le 01-01-2011 à 22:26:06
Aah, ben j'ai finalement résolu mon problème en virant la structure d'animations de garray (qui servait à rien vu qu'elle stockait le nombre de frame, et c'est le nombre de ligne des petits tableaux) et en faisant un vector < vector <animdata > > *garray
Merci d'votre aide !
Marsh Posté le 01-01-2011 à 19:43:34
Bonsoir !
Bon, j'en suis à la fin avec ma DLL, j'ai juste un ptit problème à cause d'une ligne :
Voilà, cette ligne est sensé stocké un vector de structure animdata dans le membre "anim", que je récupère plus tard via cette fonction :
Seulement, c'est que quand je laisse cette ligne "(*garray)[n].anim =*narray;" ben j'me choppe un méchant "Access Violation at address 6AF3EAD6 in module "GMDLL.dll". Write of address 00030002." lorsque je charge une animation
Voilà, si quelqu'un pouvait m'aiguiller
Merci à vous et bonne année
---------------
Perhaps you don't deserve to breathe