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
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|