Accueil > Forum > > > > erreur mémoire
erreur mémoire
vendredi 30 novembre 2007 à 10:35:41 |
erreur mémoire

Mitch986
|
Bonjour,
Je suis face à un problème de mémoire je pense. En effet, je cherche à écrire une fonction qui liste les dossiers d'un répertoire. J'ai fait 3 fonctions, dont les algos sont bons (testés) mais je ne peux jamais récupérer la liste dans mon programme principal. Voici la première que j'ai faite (elle prend en paramètre une chaine de type AWR_String nommée Shd_Folder_Path et renvoie une liste de type AWR_Shd_ShaderList) :
char* Path; Path = StringToChar (Shd_Folder_Path); // We need to manipulate char* variables so we change Shd_Folder_Path into a char* strcat(Path,"\\*"); // To go in the Shaders folder bool bRestart=false;
Restart:
WIN32_FIND_DATA wData; HANDLE listing; listing=FindFirstFile(Path,&wData); AWR_Shd_ShaderList Temp_Folders_List; if (listing==INVALID_HANDLE_VALUE) return Temp_Folders_List; int bList=true;
while(bList) // While there is Folder in the Folder Path { if(wData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // Check if the it's a Folder { if(strcmp(wData.cFileName,".")!=0 && strcmp(wData.cFileName,"..")!=0 && !bRestart) { // We add the Folder to the List of Folders AWR_Shd_ShaderBase* New_Folder = new AWR_Shd_ShaderBase (CharToString(wData.cFileName)); Temp_Folders_List.Add_Shader(New_Folder); } } bList=FindNextFile(listing,&wData); // We go to the next File of the Directory Path } FindClose(listing); if(!bRestart) { bRestart=true; goto Restart; } return Temp_Folders_List;
Tout se passe bien avant le "
if(!bRestart)" qui retourne au Restart et recrée la liste, donc écrase l'ancienne. Quand il arrive au return, il me renvoie donc la deuxième liste, qui est vide. Le truc, c'est que quand je cherche à déplacer le return ou même la déclaration de la liste, mon programme plante sur une erreur de mémoire, un truc genre 0x00005. Là je ne sais plus quoi faire. Je vous mets dessous la déclaration de Add_Shader
car c'est elle qui fait planter dans mes autres fonctions :
void AWR_Shd_ShaderList::Add_Shader (AWR_Shd_ShaderBase * Shader_Base) { this->Current_Shader_List = this->First_Shader_List; if (Current_Shader_List == NULL) { this->Current_Shader_List = Shader_Base; this->First_Shader_List = Shader_Base; } else { while (Current_Shader_List->AWR_Next_Shader != NULL) { this->Current_Shader_List = this->Current_Shader_List->AWR_Next_Shader; } this->Current_Shader_List->AWR_Next_Shader = Shader_Base; } }
Merci de m'aider, peu importe les changements que je fais, ça plante le programme ! A L'AIDE !!
|
|
samedi 1 décembre 2007 à 12:06:50 |
Re : erreur mémoire

juju12
|
Réponse acceptée !
C'est toi qui a codé la classe AWR_Shd_ShaderList? Et dans ce cas, as-tu implémenté un constructeur de copie? Parce que quand tu fais return Temp_Folders_List, la variable Temp_... est détruite (puisque déclarée dans la fonction) et une copie est faite dans le code d'où tu as appelé la fonction. Si tu n'a pas implémenté de constructeur de copie, le compilateur en mettra un par défaut, mais il va pas marcher super : il se contente de recopier les données...sauf que toi dans ces données tu avais des pointeurs, donc ceux-ci ne sont plus valides après retour de la fonction et destruction de Temp_...(je suppose que tu libères la mémoire dans le destructeur), par conséquent bug quand tu tentes d'accéder aux données.
|
|
Cette discussion est classée dans : list, folder, shader, awr, shd
Répondre à ce message
Sujets en rapport avec ce message
Problème con... [ par Mitch986 ]
Bonjour,Comme vous allez le voir je débute en C++ et je suis face à un problème. Voici la fonction en question :AWR_Shd_ShaderBase* AWR_Shd_ShaderList
Vérification dossier [ par Mitch986 ]
Bonjour !Je souhaiterai savoir si un fichier existe, j'ai pour le moment le code suivant :bool AWR_Shd_ShaderManager::Has_Shaders_Path (AWR_String Shd
list et class - tri sur les pointeur [ par DroledeBx ]
Bonsoir, j'ai un problème avec une list. J'ai définit une class fiche. J'ai une list de pointeur vers des fiches. Je voudrais trier cette list. Avec s
list (STL) de tableau [ par BozzoDodo ]
Bonjour,j'aurais voulu créer une list de tableau.Je m'explique... en gros chaque élément de la liste possède 3 éléments (3 int par exemple).Mon code e
Listview [ par akalys ]
Re bonjour ^^ J'aurais une petite question a propos des listview. Je suis novice et j'ai suivuit un tuto pour créer un MFC. Ou dois je mettre mon co
liberer un emplaceemnt dans une "list" en c++ sans supprimer l'objet [ par timy94 ]
BonjourVoici mon codeCEvenement & MyClasse::Get_Evt(){ list ::iterator pEvt; list ::iterator pListEvt = m_Liste_Evt.begin(); pEvt
List View Drag'n'drop [ par K_3 ]
Bonjour,J'ai une listview qui est similaire à une listbox mais contenant plusieurs colonnes,je me demandais comment je pourrai procéder pour que la li
problem (bug) [ par gabsi08aymen ]
bonsoir, en fait, j ai un mini projet a faire qui consiste a gerer un forum de disscussion en c on a 3 fichiers .txt un ki contien la liste des adhere
visu d'une structure [ par toni93330 ]
Bonjour,Voila mon problème :j'utilise visual studio 2005 et le framework .NET. Dans mon programme principale j'inclus un fichier de définition qui con
Livres en rapport
|
Derniers Blogs
COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
ERREUR DE POINTEURERREUR DE POINTEUR par africanwinners
Cliquez pour lire la suite par africanwinners CLISTCTRLCLISTCTRL par dorras7
Cliquez pour lire la suite par dorras7
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|