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

  FORUM HardWare.fr
  Programmation

  problème de malloc

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème de malloc

n°92036
ninitro
Posté le 22-01-2002 à 17:38:06  profilanswer
 

Voilà,
 
Encore un problème avec le C. J'ai un programme qui utilise la fonction malloc. Il tourne très bien sur mon portable, mais pas sur les pc de mon école. Problème : il faut que je le rende demain.
La fonction qui utilise le malloc est récursive, donc bouffe pas mal de mémoire. J'ai essayé de modifier la taille des arguments de malloc, mais rien n'y fait.
Y aurait-il une solution ?

mood
Publicité
Posté le 22-01-2002 à 17:38:06  profilanswer
 

n°92049
otb82
Fear is Failure
Posté le 22-01-2002 à 18:16:32  profilanswer
 

ninitro a écrit a écrit :

Voilà,
 
Encore un problème avec le C. J'ai un programme qui utilise la fonction malloc. Il tourne très bien sur mon portable, mais pas sur les pc de mon école. Problème : il faut que je le rende demain.
La fonction qui utilise le malloc est récursive, donc bouffe pas mal de mémoire. J'ai essayé de modifier la taille des arguments de malloc, mais rien n'y fait.
Y aurait-il une solution ?  



tu devrait expliquer un peu plus je crois


---------------
email : otb82@hotmail.com
n°92134
Krueger
tout salaire demande dutravail
Posté le 22-01-2002 à 21:22:50  profilanswer
 

Tu fais plein de malloc, mais est que t'en libères aussi par hasard (juste au cas où, sans être méchant)? Pourquoi ne pas faire un gros malloc de tout ce dont tu as besoin puis gérer tout ça dans une grosse structure (ce qui éviterait de perdre quelques dizaines d'octets à chaque allocation)?
 
Sinon c'est vrai que plus d'information serait la bienvenue.
 
:hello:


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°92202
la viper
Posté le 22-01-2002 à 23:54:41  profilanswer
 

soit tu passes par le malloc / memcpy / free soit par le malloc / realloc / free
 
en gros :
 
 
 
while..
 
delete (ptr2);
char *ptr =(char*) malloc (size);
char *ptr2 = (char*) malloc (new_size);
mempcy(ptr2,ptr);
delete (ptr);
 
ou
char *ptr =(char*) malloc (size);
....
ptr = (char*) realloc (new_size);
 
delete(ptr);
ps : si free plante -> probleme de size

n°92252
El_gringo
Posté le 23-01-2002 à 10:20:37  profilanswer
 

la viper a écrit a écrit :

soit tu passes par le malloc / memcpy / free soit par le malloc / realloc / free
 
en gros :
 
 
 
while..
 
delete (ptr2);
char *ptr =(char*) malloc (size);
char *ptr2 = (char*) malloc (new_size);
mempcy(ptr2,ptr);
delete (ptr);
 
ou
char *ptr =(char*) malloc (size);
....
ptr = (char*) realloc (new_size);
 
delete(ptr);
ps : si free plante -> probleme de size  




 
hé !? un delete c sur un objet, pas sur un espace mémoire réservé par un malloc. normalement on fait un free...
ça passe ça !?

n°92255
BENB
100% Lux.
Posté le 23-01-2002 à 10:25:36  profilanswer
 

El_Gringo a écrit a écrit :

 
 
hé !? un delete c sur un objet, pas sur un espace mémoire réservé par un malloc. normalement on fait un free...
ça passe ça !?  




A priori non...
Bien sur sur certaines implementations il n'y a pas de Pb.

n°92272
Carbon_14
Posté le 23-01-2002 à 10:59:31  profilanswer
 

Sous Borland C 3, quand j'ai transformé mes malloc() en new, les free() oubliés n'ont pas posé de pb.
 
Habituellement (me semble-t-il), pour l'allocation mémoire, on fait (d'après les livres)
malloc() et free()
 
ou new xx et delete.
 
Les compilos font le boulot de nous comprendre :)  :).

n°93819
aragorns
Posté le 27-01-2002 à 00:00:40  profilanswer
 

Si ca marche po sur les becannes de ton ecole, c parceke il faut que tu compiles ton source sur la becanne de l'ecole.
C peut etre ca, si tu l'a pas fait c meme sur.
Sinon, joue avec les options de compilations...

n°93820
Suri
Darksurious
Posté le 27-01-2002 à 00:27:42  profilanswer
 

aragorns a écrit a écrit :

Si ca marche po sur les becannes de ton ecole, c parceke il faut que tu compiles ton source sur la becanne de l'ecole.
C peut etre ca, si tu l'a pas fait c meme sur.
Sinon, joue avec les options de compilations...  




avec un peu de bol, il est intelligent et le sait... :sarcastic:


---------------
Suri.morkitu.org : Balades au coeur de la ville...
n°93825
spice di c​onass
totalement anticonformiste!!
Posté le 27-01-2002 à 01:09:34  profilanswer
 

les becanes tournent sous le meme OS chez toi et a l'ecole?

mood
Publicité
Posté le 27-01-2002 à 01:09:34  profilanswer
 

n°93837
Suri
Darksurious
Posté le 27-01-2002 à 11:09:22  profilanswer
 

spice di conass a écrit a écrit :

les becanes tournent sous le meme OS chez toi et a l'ecole?  




 
mmm c pas forcement une question d'OS....


---------------
Suri.morkitu.org : Balades au coeur de la ville...
n°93891
spice di c​onass
totalement anticonformiste!!
Posté le 27-01-2002 à 17:03:33  profilanswer
 

n

Citation :

mmm c pas forcement une question d'OS....


 
oui mais ca peut ;)

n°93894
flo850
moi je
Posté le 27-01-2002 à 17:13:45  profilanswer
 

sous linux/unix , pas de pb , la ram est liberer correctement ( meme si on oublie de faire les free )  
sous win , ca plante hyper vite si tu ne libere pas la ram .
moi , je conseille de bien verifier qu'il y a des free avec chaque malloc .<--- syntaxe du C ansi


---------------

n°93945
LeGreg
Posté le 27-01-2002 à 20:42:20  profilanswer
 

CARBON_14 a écrit a écrit :

Sous Borland C 3, quand j'ai transformé mes malloc() en new, les free() oubliés n'ont pas posé de pb.
Les compilos font le boulot de nous comprendre :)  :).  




 
c'est total bullshit.
c'est bien de donner des faux bons conseils
mais faut assumer apres.
 
Bon alors pour ceux qui n'auraient pas compris:
malloc et free c'est pour allouer des blocs memoires sans type et c'est a reserver pour la programmation C (tu peux utiliser
malloc en C++ mais tu cours le risque de t'emmeler les pinceaux).
New et Delete (ou sa variante delete[] pour les tableaux d'objets) c'est pour allouer des objets et ca ne fait pas que reserver la memoire ca appelle le constructeur et le destructeur de l'objet. Donc on ne melange pas les deux.
 
A+
LEGREG

n°94016
Krueger
tout salaire demande dutravail
Posté le 28-01-2002 à 00:46:18  profilanswer
 

Il n'y a ni constructeur, ni destructeur de primitifs. Et quand on alloue un tableau avec new chacune de ses valeurs n'est-elle pas indéfinie?


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°94100
Carbon_14
Posté le 28-01-2002 à 12:48:59  profilanswer
 

legreg a écrit a écrit :

 
 
c'est total bullshit.
c'est bien de donner des faux bons conseils
mais faut assumer apres.
 




 
Je voulais principalement signaler qu'on pouvait NE PAS AVOIR D'AVERTISSEMENT DU COMPILO quand on utilise des opérateurs "mélangés" par étourderie (<- à éviter pour les futurs pros). C'était uniquement appliqué à des chaînes.
 
Donc, quand on passe du C au C++, vaut mieux tout réécrire. :ouch:


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

  problème de malloc

 

Sujets relatifs
Problème de GROS newbie en C++[VB] probleme de socket
hoplà, petit probleme php... tout bete je le reconnais ...[C] Un petit pb de realloc et de malloc :
[XML] Problème avec l'ordre des éléments d'un fichier XMLpetit probleme hyper facile pour VB pour mon premier tp de fac
problème de PATHjava : probleme de creation du .bat de compilation et d'execution
[ASP ACCESS] Problème de requête!Probleme de FORMULAIRES
Plus de sujets relatifs à : problème de malloc


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