Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1182 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Malloc et Free ... truc que je pige pas

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[C++] Malloc et Free ... truc que je pige pas

n°396688
Kyle_Katar​n
Posté le 16-05-2003 à 12:55:05  profilanswer
 

Mon Free me plante le prog avec une histoire de bad heap pointer :
 

Code :
  1. bool CEtatList::Process()
  2. {
  3. CEtatListElt* cur;
  4. char* tab=NULL,*pt=NULL;
  5. int N,i;
  6. cur=first;
  7. while (cur!=NULL)
  8. {
  9.   if (cur->etat.ToBeProcessed)
  10.   {
  11.    N=cur->etat.GetNewStatesList(&tab);
  12.    for(i=0; i <N; i++)
  13.    {
  14.     pt=&tab[i*10];
  15.     AfxMessageBox(pt);
  16.    }
  17.    cur->etat.ToBeProcessed=false
  18.  
  19.    free(tab);
  20.   }
  21.  
  22.   cur=cur->next;
  23. }
  24. return true;
  25. }


 
où la fonction GetNewStateLists est la suivante :  
 

Code :
  1. int CEtat::GetNewStatesList(char **tab)
  2. {
  3. int N=2;
  4. *tab=(char*)malloc(10*sizeof(char));
  5. *tab="123456789\0987654321\0";
  6. return N;
  7. }


 
Merci d'avance,
 
Kyle

mood
Publicité
Posté le 16-05-2003 à 12:55:05  profilanswer
 

n°396692
chrisbk
-
Posté le 16-05-2003 à 12:59:15  profilanswer
 

c'est normal
 
 

Code :
  1. *tab=(char*)malloc(10*sizeof(char)); //tu alloues de la memoire, ca c OK
  2. *tab="123456789\0987654321\0"; //tu fais pointe le contenu de tab sur un string (contrairement a ce que tu crois, tu ne le recopie pas) etant donne que cette zone ne t'appartient pas, le free va planter dessus


 
copie de string = strcpy

n°396693
Kyle_Katar​n
Posté le 16-05-2003 à 13:00:44  profilanswer
 

bien vu !

n°396694
chrisbk
-
Posté le 16-05-2003 à 13:02:33  profilanswer
 

c'est pas pour faire mon taz, mais si tu as un peu de temps (genre 5min) regarde du cote des std::string, au moins t'auras plus a te soucier de ce fatras

n°396748
theshockwa​ve
I work at a firm named Koslow
Posté le 16-05-2003 à 13:46:29  profilanswer
 

C++ et malloc dans une même phrase, pour moi, ca colle pas ...


---------------
last.fm
n°396834
ToxicAveng​er
Posté le 16-05-2003 à 14:38:48  profilanswer
 

chrisbk a écrit :

c'est pas pour faire mon taz, mais si tu as un peu de temps (genre 5min) regarde du cote des std::string, au moins t'auras plus a te soucier de ce fatras


 
malloc -> C
string -> C++
 
 :o

n°396840
chrisbk
-
Posté le 16-05-2003 à 14:40:42  profilanswer
 

ToxicAvenger a écrit :


 
malloc -> C
string -> C++
 
 :o  


heuh oui, mais le rapport avec mon post ?
ah si, cpris, mais je me permet de te montrer ca :
 
 

Code :
  1. bool CEtatList::process()


 
ou alors le C a vachement evoluer depuis la derniere fois que j'en ai fait [:meganne]


Message édité par chrisbk le 16-05-2003 à 14:41:25
n°397035
Kyle_Katar​n
Posté le 16-05-2003 à 15:38:52  profilanswer
 

C'est effectivement du C++

n°397272
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 16-05-2003 à 16:39:53  profilanswer
 

Kyle_Katarn a écrit :

C'est effectivement du C++


 
malloc/free c'est du C  :sarcastic:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°397398
Kyle_Katar​n
Posté le 16-05-2003 à 18:38:25  profilanswer
 

mais ça marche en C++ ;-)

mood
Publicité
Posté le 16-05-2003 à 18:38:25  profilanswer
 

n°397493
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 16-05-2003 à 20:12:00  profilanswer
 

Kyle_Katarn a écrit :

mais ça marche en C++ ;-)


 
Tout dépend si tu veux coder proprement en utilisant new/delete (qui est plus simple) ou coder comme un porc en faisant du mix C/C++ [:spamafote]


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°397506
Kyle_Katar​n
Posté le 16-05-2003 à 20:31:24  profilanswer
 

je vais convertir alors ...
 
mais j'aimerais que tu m'explique en quoi, pour de simple variables (et non des structures complexes comme des classes), new/delete est mieux que malloc/free (avec un autre argument que "c'est du C" )


Message édité par Kyle_Katarn le 16-05-2003 à 20:32:47
n°397591
skeye
Posté le 16-05-2003 à 22:12:05  profilanswer
 

Kyle_Katarn a écrit :

je vais convertir alors ...
 
mais j'aimerais que tu m'explique en quoi, pour de simple variables (et non des structures complexes comme des classes), new/delete est mieux que malloc/free (avec un autre argument que "c'est du C" )


Le premier intéret que j'y vois, c'est que qd tu donnes des bouts de code personne te fait chier avec ca...:D
Mais bon ca donne un code plus propre, plus lisible (AMHA), et ca peut éventuellement éviter des erreurs du style oubli de sizeo(machin)...

n°397637
Konar
Posté le 16-05-2003 à 22:44:51  profilanswer
 

ToxicAvenger a écrit :


 
malloc -> C
string -> C++
 
 :o  


 
je peux jouer moi aussi ?
 
fork   -> C
vector -> C++
 
j'ai bon ?

n°397847
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 17-05-2003 à 12:54:14  profilanswer
 

Kyle_Katarn a écrit :

je vais convertir alors ...
 
mais j'aimerais que tu m'explique en quoi, pour de simple variables (et non des structures complexes comme des classes), new/delete est mieux que malloc/free (avec un autre argument que "c'est du C" )


 
Quand tu parles anglais, tu ne fous pas des mots d'espagnol au milieu, même si ton interlocuteur comprend les 2. C'est de la simple logique, si tu ne la comprends pas, délaisse la programmation pour te lancer dans la poésie ou la sculpture... :sarcastic:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°397854
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-05-2003 à 13:25:43  profilanswer
 
n°397861
Taz
bisounours-codeur
Posté le 17-05-2003 à 13:38:08  profilanswer
 

le problème de malloc/free en C++, c'est que ça ne fait pas appel au constructeur/destructeur, d'ou le problème...
 
et puis tourne toi vers les strings, ça te prendra moins de temps à developper et ça t'evitera de faire des bourdes enormes puisqu'apparemment, avant meme de parler de C++, tu as des lacunes en C [:the grosminet]  :)

n°397871
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-05-2003 à 13:56:48  profilanswer
 

[mode mauvaise langue]
 
faut dire que les programmeurs venant de VB font souvent des bêtises avec les pointeurs :D
 
[/mode mauvaise langue]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°397876
Babouchka
You're no fun anymore
Posté le 17-05-2003 à 14:06:50  profilanswer
 

antp a écrit :

[mode mauvaise langue]
 
faut dire que les programmeurs venant de VB font souvent des bêtises avec les pointeurs :D
 
[/mode mauvaise langue]


 
mais peut on considerer les gens qui font du vb comme des programmeurs ?  [:figti]  
 
A+

n°397883
Taz
bisounours-codeur
Posté le 17-05-2003 à 14:18:00  profilanswer
 

et un petit tour vers les std::list serait le bienvenu: depuis le temps, tu penses bien que le problème des listes est résolu :sweat:
 
 
et pi j'ai comme l'impression que t'es faché avec les références...l'achat d'un livre s'impose Kyle   [:tobrainc]

n°397931
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 17-05-2003 à 15:58:49  profilanswer
 

Babouchka a écrit :


 
mais peut on considerer les gens qui font du vb comme des programmeurs ?  [:figti]  
 


 
certes  :D


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°398161
Kyle_Katar​n
Posté le 17-05-2003 à 22:04:04  profilanswer
 

++Taz a écrit :


et pi j'ai comme l'impression que t'es faché avec les références...l'achat d'un livre s'impose Kyle   [:tobrainc]  


 
Disons que je "pense en pointeurs"...
 
Pour l'achat d'un livre, je préfère parler avec des gens qui savent sur un forum plutôt que d'avoir le réflexe désocialisant de me plonger dans un bouquin au premier problème venu.  
 
Quand aux vannes sur VB, si vous me trouvez un meilleur langage d'IHM vous me faites signe...
(ok sortit du prototypage IHM je reconnais que ça sert pas à grand chose)


Message édité par Kyle_Katarn le 17-05-2003 à 22:22:47
n°398164
ToxicAveng​er
Posté le 17-05-2003 à 22:08:51  profilanswer
 

Konar a écrit :


 
je peux jouer moi aussi ?
 
fork   -> C
vector -> C++
 
j'ai bon ?


 
fork ? connais pas, c'est pas standard. C'est posix.

n°398165
ToxicAveng​er
Posté le 17-05-2003 à 22:10:00  profilanswer
 

++Taz a écrit :

le problème de malloc/free en C++, c'est que ça ne fait pas appel au constructeur/destructeur, d'ou le problème...
 
et puis tourne toi vers les strings, ça te prendra moins de temps à developper et ça t'evitera de faire des bourdes enormes puisqu'apparemment, avant meme de parler de C++, tu as des lacunes en C [:the grosminet]  :)  


 
c'est surtout qu'il croit que le C++ n'est qu'une extension du C. Alors que ces 2 langages n'ont strictement rien à voir, mais bon. Dans ces cas là, C# et java c'est la même chose.

n°398166
ToxicAveng​er
Posté le 17-05-2003 à 22:10:53  profilanswer
 

Kyle_Katarn a écrit :


 
Disons que je "pense en pointeurs"...
 
Pour l'achat d'un livre, je préfère parler avec des gens qui savent sur un forum plutôt que d'avoir le réflexe désocialisant de me plonger dans un bouquin au premier problème venu.  
 
Quand aux vannes sur VB, si vous me trouvez un meilleurs language d'IHM vous me faites signe...
(ok sortit du prototypage IHM je reconnais que ça sert pas à grand chose)


 
trop facile: C#
 
Et VB n'est pas un "langage d'ihm" (ca ne veut rien dire d'ailleurs. De plus en français, c'est langage sans u. Tu mélanges C et C++, anglais et francais... t'es pas bordélique comme garçon  :lol: )
VB c'est du RAD, point barre.
 
A la rigueur en "langage d'ihm" je verrais bien UIL/MRM mais bon...


Message édité par ToxicAvenger le 17-05-2003 à 22:12:45
n°398167
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-05-2003 à 22:12:40  profilanswer
 

Kyle_Katarn a écrit :


Quand aux vannes sur VB, si vous me trouvez un meilleurs language d'IHM vous me faites signe...
 


 
Delphi/C++Builder [:kiki]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°398170
Kyle_Katar​n
Posté le 17-05-2003 à 22:15:22  profilanswer
 

Oui mais t'es bien placé pour savori que je débute en Delphi ;-)
 
Bon, je pense qu'on va clore ce topic qui va partir en troll non constructifs, merci de votre aide pour ceux qui ont bien voulu m'aider.

n°398175
ToxicAveng​er
Posté le 17-05-2003 à 22:18:20  profilanswer
 

Kyle_Katarn a écrit :

Oui mais t'es bien placé pour savori que je débute en Delphi ;-)
 
Bon, je pense qu'on va clore ce topic qui va partir en troll non constructifs, merci de votre aide pour ceux qui ont bien voulu m'aider.


 
on t'as repondu pourtant. Si tu prends la mouche dès qu'on te fait remarquer tes faiblesses, en effet, fermons le topic. Ca ne sert a rien de te répondre donc.

n°398178
Kyle_Katar​n
Posté le 17-05-2003 à 22:21:57  profilanswer
 

c'est pas ce que je voulais dire et c'est ce genre de truc que je voulais éviter.
 
Je suis conscient de mes faiblesses, c'est pour cela que je remercie toujours ceux qui veulent bien m'aider.

n°398179
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-05-2003 à 22:23:03  profilanswer
 

non Kyle a raison, dès qu'on commence à comparer des langages ça part en troll ou en discussion sans fin :/


Message édité par antp le 17-05-2003 à 22:23:13

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°398186
ToxicAveng​er
Posté le 17-05-2003 à 23:03:06  profilanswer
 

antp a écrit :

non Kyle a raison, dès qu'on commence à comparer des langages ça part en troll ou en discussion sans fin :/


 
je vois pas où ca partait en live là :??:

n°398194
Taz
bisounours-codeur
Posté le 17-05-2003 à 23:34:16  profilanswer
 

Kyle_Katarn a écrit :


Pour l'achat d'un livre, je préfère parler avec des gens qui savent sur un forum plutôt que d'avoir le réflexe désocialisant de me plonger dans un bouquin au premier problème venu.

ben apparemment, ça porte pas ses fruits   [:tomtom75]

n°398195
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-05-2003 à 23:38:54  profilanswer
 

ToxicAvenger a écrit :


 
je vois pas où ca partait en live là :??:  


 
Ça risquait :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°398207
ToxicAveng​er
Posté le 18-05-2003 à 00:09:38  profilanswer
 

antp a écrit :


 
Ça risquait :D


 
ah oui mais dans ces cas là on fait jamais rien alors  :o

n°398345
haazheel
Posté le 18-05-2003 à 13:14:35  profilanswer
 

Question en passant (plus pour antp je pense):
 
ça sert à "rien" d'utiliser les std::string avec Borland C++ Builder, comme il y a AnsiString qui m'a l'air de faire exactement les même choses?
 
Merci!


---------------
Another .Net Blog
n°398346
verdoux
And I'm still waiting
Posté le 18-05-2003 à 13:16:27  profilanswer
 

Ca dépend, on peut vouloir faire du code un minimum portable.

n°398350
antp
Super Administrateur
Champion des excuses bidons
Posté le 18-05-2003 à 13:23:54  profilanswer
 

code portable et/ou sans les VCL de Borland -> std::string
code uniquement pour C++Builder et utilisant massivement les VCL de Borland -> AnsiString
Pour les échanges avec l'interface graphique si on utilise les VCL, AnsiString est quand même plus pratique :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°398910
haazheel
Posté le 19-05-2003 à 00:02:35  profilanswer
 

Pas besoin d'être portable, et utilisant les VCL => AnsiString :D


---------------
Another .Net Blog
n°398970
bjone
Insert booze to continue
Posté le 19-05-2003 à 00:59:54  profilanswer
 

antp a écrit :


 
Delphi/C++Builder [:kiki]  


 
 
+1 :D

n°400463
blackgodde​ss
vive le troll !
Posté le 19-05-2003 à 21:09:02  profilanswer
 

    *tab=(char*)malloc(10*sizeof(char));
     *tab="123456789\0987654321\0";
 
attention si tu utilises un strcpy, ca va prendre plus de 10 caractères.


---------------
-( BlackGoddess )-
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] Malloc et Free ... truc que je pige pas

 

Sujets relatifs
Question con - pb avec free()[PHP] Chmod avec free qui marche pas
Possible de se connecter a une base free mysql avec java/Mysqfront ??[Merise] Cherche application qui crée un MCD merise ? (Free ou Demo)
[php] appeler une fonction dans une regexp ou un truc du genre :dJ'aimerai bien faire un truc de ce style..(Gestion graphique d'objets)
WWW-Authenticate sur Free... marche pô ??Truc bizarre avec mysql
[JavaScript] <input type = label> ou un truc dans le genre...[php/Mysql] Free peu meme pa faire une requete
Plus de sujets relatifs à : [C++] Malloc et Free ... truc que je pige pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR