begin process at 2012 05 29 08:28:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

Erreur lors d'un delete[]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur lors d'un delete[]

vendredi 26 novembre 2010 à 23:22:17 | Erreur lors d'un delete[]

Albanderuaz

Bonsoir tout le monde!

J'ai une erreur sur un delete dont je n'arrive pas à trouver la solution.
Le code appelle la fonction StartThread() qui va démarrer un thread comme vous pouvez le voir:

Code C/C++ :
void StartThread(char* a ,char* b)	
{															
	char* path=new char[MAX_PATH];
	char* action=new char[MAX_PATH];
	strcpy(path,cheminDuFichier);
	strcpy(action,action2);
	LPVOID params[]={action,path};
        CloseHandle(CreateThread(0,0,TheThread,params,0,&idthread));
}


DWORD WINAPI TheThread(LPVOID Parametres)
{
	char path[MAX_PATH]="";
	char action[MAX_PATH]="";
	strcpy(action,((char**)Parametres)[0]);
	strcpy(path,((char**)Parametres)[1]);
	delete[] ((char**)Parametres)[0];
	delete[] ((char**)Parametres)[1];
}


Le problème a lieu lors du second delete[]
En mode debug le compilo (vc++) me dit que le problème est sur la ligne:
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)); de la fonction void operator delete().

Merci beaucoup si vous trouvez le problème!
Alban
samedi 27 novembre 2010 à 01:55:41 | Re : Erreur lors d'un delete[]

Ballesteros

Réponse acceptée !
C'est tout simplement que delete[] est supposé détruire un tableau, pas un élément de tableau.
Il te suffit de delete[] Parametres, en une seule ligne.
samedi 27 novembre 2010 à 11:58:57 | Re : Erreur lors d'un delete[]

Albanderuaz

Ah d'accord, merci beaucoup!
samedi 27 novembre 2010 à 12:13:50 | Re : Erreur lors d'un delete[]

Albanderuaz

Donc alors si j'ai bien compris, j'ai un tableau {pointeur1,pointeur2} où pointeur 1 et 2 pointent vers des tableaux de char. si je veux supprimer tout cela il faut simplement faire un delete[] dessus? Il ne faut pas non plus faire un delete[] sur les tableaux pointeur1 et pointeur2?
samedi 27 novembre 2010 à 15:02:11 | Re : Erreur lors d'un delete[]

Ballesteros

Je voudrais bien la confirmation de quelqu'un d'autre, mais a priori delete[] est 'intelligent', et va détruire tout ce qu'il faut . Si tu as un tableau de tableaux de tableaux, je pense que le delete[] sur le tableau du haut de la hiérarchie va tout deleter proprement.

L'utilisation de delete sur un élement particulier du tableau serait à faire seulement si tu veux supprimer un élément particulier.
samedi 27 novembre 2010 à 16:06:55 | Re : Erreur lors d'un delete[]

ghuysmans99

Membre Club
Réponse acceptée !
Code C/C++ :
delete[] tonTableau;
désallouera les pointeurs qu'il contient mais pas récursivement

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
samedi 27 novembre 2010 à 16:08:48 | Re : Erreur lors d'un delete[]

Albanderuaz

Merci pour vos explications, je comprends mieux maintenant


Cette discussion est classée dans : parametres, action, path, char, delete


Répondre à ce message

Sujets en rapport avec ce message

pb de nom de volume [ par shinevilkyo ] voici un bout de mon code j utile la fonc getvolumeinfo mais j ai un pb et je ne trouve po de koi il s agit merci d aider un debutant a rogrammer sous que fait exactement delete ?? [ par Tonus ] Salut @ tous Voila je voudrais savoir si en créant un tablo dans un fonction , l'instruction delete va -t- elle supprimer la totalité du tablo ou jus Libération mémoire.... [ par Clonk ] Bonjour,Voilà, j'ai une appli qui utilise énormément de mémoire, jai plusieurs listes chainées de plusieurs milliers d'enregistrements, de nombreuses desalocation char** foireuse [ par MuPuF ] Bonjour, j'ai un probleme d'allocation/désalloc mémoirevoila la bete :char** File.PMD5;//AloueFile.PMD5=new char*[File.NumHash];    for(unsigned int i delete ne marche pas ...aidez-moi :( [ par pepsidrinker ] Bonjour a tous,Voici mon code :---- for(int i= 1; i!= ArraySize+1 ;++i)   delete []   ArrayPointer[i];-----ArrayPointer est de type char**. (un tablea Probleme de delete suite à une allocation dynamique [ par Kaory ] Bonjour j'ai un petit (ou gros faut voir) probleme je manipule des char * et j'utilise des new et lorsqu'il vient le moment de les desallouer avec del Parametres de compilation VC2008 pour exe petit et fonctionnant sur tout PC [ par Galmiza ] Salut,J'ai un programme con comme tout qui se compile parfaitement mais dont la taille me gene.Quand j'etais sous Visual 2006, l'exe faisait 6.5ko.Mai ecrire le texte de ma variable dans GetModuleFileName [ par sokotanic ] salut j'ai un probleme char temp[MAX_PATH]; temp = "mon text"; len = GetModuleFileName(NULL,temp,MAX_PATH); la compilation marche pas et j'ai eu ses pb malloc [ par youpiyoyo ] d'apres msdn char *string; /* Allocate space for a path name */ string = malloc( _MAX_PATH );deja ca chez moi ca compil pas me compilo me di impos les fichier en C [ par abdobergach ] bonjour j'ai un erreur qui je connais pas pouquoi qlq'un m'aider svp,voila l'eerreur: error C2664: 'CreateFileW'*: impossible de convertir le paramètr


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales