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

  FORUM HardWare.fr
  Programmation
  C++

  (malloc : question toute bete)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

(malloc : question toute bete)

n°250858
blackgodde​ss
vive le troll !
Posté le 21-11-2002 à 17:57:00  profilanswer
 

malloc alloue la mémoire ou ? ds la pile ? le heap ? en virtualmemory ?


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 21-11-2002 à 17:57:00  profilanswer
 

n°250859
El_gringo
Posté le 21-11-2002 à 17:59:33  profilanswer
 

à priori, je dirais en mémoire virtuelle (oui, "virtual memory", on peut aussi appeler ça mémoire virtuelle !), mais je suis pas sûr du tout !

n°250861
BENB
100% Lux.
Posté le 21-11-2002 à 18:02:06  profilanswer
 

Dans le tas (heap).

n°250898
blackgodde​ss
vive le troll !
Posté le 21-11-2002 à 18:43:07  profilanswer
 

ah ... alors ki ki a raison ? a moins que le tas soit ds la mémoire virtuelle ?


---------------
-( BlackGoddess )-
n°250912
mrbebert
Posté le 21-11-2002 à 19:14:22  profilanswer
 

A priori, c'est pas dans la pile
 
Virtual memory/heap, c'est la même chose, non :??:

n°250916
blackgodde​ss
vive le troll !
Posté le 21-11-2002 à 19:37:22  profilanswer
 

euh ... bin tiens 3 avis différents ... ma vla bien ...
 
Heap/mem.virt. je pense pas que ce soit la mm chose car il y a 2 api differentes a chaque fois (sous win32)
 
(VirtualAlloc/HeapAlloc, HeapCreate, HeapFree/VirtualFree, HeapRealloc, VirtualProtect, etc ...)
 
aussi d'apres ce que g compris ds les msdn un prog peut avoir plusieurs Heaps, mais bien sur qu'un seul espace mémoire (mémoire virtuelle du process)


---------------
-( BlackGoddess )-
n°250926
sombresong​e
Posté le 21-11-2002 à 19:52:26  profilanswer
 

C dans le Heap c tout. Ensuite que le Heap soit effectivement en RAM ou dans le swap on s'en fiche. En tout cas ce qui est sur c que ça alloue pas dans la pile puiske la pile sert au variable local et au bon fonctionnement des apelles de fonction surtout

n°250931
lorill
Posté le 21-11-2002 à 20:10:35  profilanswer
 

en tout cas, c'est clairement pas dans la pile :o

n°250938
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 21-11-2002 à 20:28:03  profilanswer
 

Musaran stp, viens leur expliqué, je suis crevé.
 
 
Je dirai juste que la norme ne dit rien aprops de cela, c'est laissé à l'implémentation  :D


---------------
du bon usage de rand [C] / [C++]
n°250939
blackgodde​ss
vive le troll !
Posté le 21-11-2002 à 20:28:58  profilanswer
 

oui, musaran vient ns expliquer en détail :))))


---------------
-( BlackGoddess )-
mood
Publicité
Posté le 21-11-2002 à 20:28:58  profilanswer
 

n°250941
HappyHarry
Posté le 21-11-2002 à 20:33:55  profilanswer
 

extrait de la page de man :
 

tas  (zone de mémoire dans laquelle sont allouées les variables  dynamiques)

n°250963
mrbebert
Posté le 21-11-2002 à 21:07:00  profilanswer
 

BlackGoddess a écrit a écrit :

ah ... alors ki ki a raison ? a moins que le tas soit ds la mémoire virtuelle ?



C'est peut être ca tout simplement.
La mémoire virtuelle, c'est une manière d'accéder à la mémoire, celle ci étant gérée en plusieurs zones (le "tas", la pile...)

n°251116
Musaran
Cerveaulté
Posté le 22-11-2002 à 01:48:11  profilanswer
 

pile - stack
Zone de mémoire ou sont allouées les variables locales, placé les arguments et valeurs de retour de fonctions, les variables temporaire du compilateur.
Elle est unique pour chaque thread, sa caractériqtique est qu'on ne peut en enlever les éléments que dans l'ordre inverse où ils y ont été placés.
 
Il n'est pas indispensable qu'un système aie une pile.
 
 
tas - heap
Zone de mémoire à partir de laquelle on alloue et désalloue à volonté, dans l'ordre qu'on veut, sur commande.
 
Il peut y avoir plusieurs tas (Le C standard n'en gère qu'un).
 
 
statique - static
Segment de mémoire où sont placés les objets ayant la même durée de vie que le programme. Aucun dynamisme, pas d'allocation/désallocation.
 
Il peut y avoir plusieurs segments, typiquement:
1 pour les variables
1 pour les constantes
1 pour le code
 
 
registre-register
Des cases mémoires intégrées au processeur.
Leur "adressage" est contenu dans les instructions.
 
 
 
Notion différente:
virtuelle - virtual
Mécanisme intégré au processeur qui lui permet de simuler la présence de mémoire et d'intercepter et rediriger les appels de celle-ci vers un autre emplacement dans la mémoire physique.
 
C'est très puissant, cela permet de décharger des zones de la mémoire physique, et de les y remettre de façon transparente en cas d'accès.
 
Ce sera tout pour ce soir, j'espère que ça suffira.


Message édité par Musaran le 25-11-2002 à 02:38:49

---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°251180
nicolasm
Posté le 22-11-2002 à 08:43:16  profilanswer
 

BlackGoddess a écrit a écrit :

euh ... bin tiens 3 avis différents ... ma vla bien ...
 
Heap/mem.virt. je pense pas que ce soit la mm chose car il y a 2 api differentes a chaque fois (sous win32)
 
(VirtualAlloc/HeapAlloc, HeapCreate, HeapFree/VirtualFree, HeapRealloc, VirtualProtect, etc ...)
 
aussi d'apres ce que g compris ds les msdn un prog peut avoir plusieurs Heaps, mais bien sur qu'un seul espace mémoire (mémoire virtuelle du process)




je pe te certifié k "el gringo" a rèson car j è eu 1 fuite de mémoire en en fesan 1 peti CTRL-alt-suppr pour metr le gestionair dè tache é vérifié l éta de la RAM j è constaté kel ogmentai =>

n°251201
El_gringo
Posté le 22-11-2002 à 09:27:34  profilanswer
 

nicolasm a écrit a écrit :

 
je pe te certifié k "el gringo" a rèson car j è eu 1 fuite de mémoire en en fesan 1 peti CTRL-alt-suppr pour metr le gestionair dè tache é vérifié l éta de la RAM j è constaté kel ogmentai =>  




 
Non, j'ai pas raison...
A ce que j'ai compris, le heap peut être en mémoire Virtuelle.
La question était mal posée, parce que "mémoire virtuelle" n'avait rien à faire dans les propositions.
Bref, le vraie réponse, c'est : dans le heap (tas).

n°251204
lorill
Posté le 22-11-2002 à 09:32:01  profilanswer
 

nicolasm a écrit a écrit :

 
je pe te certifié k "el gringo" a rèson car j è eu 1 fuite de mémoire en en fesan 1 peti CTRL-alt-suppr pour metr le gestionair dè tache é vérifié l éta de la RAM j è constaté kel ogmentai =>  




 
aïe aïe aïe ! mes pauvres yeux !   :sweat:

n°251209
drasche
Posté le 22-11-2002 à 09:38:09  profilanswer
 

lorill a écrit a écrit :

 
 
aïe aïe aïe ! mes pauvres yeux !   :sweat:  




 
encore un cas où j'ai dû relire pour être sûr d'avoir saisi l'essence de ses propos :D
 
nicolasm > j'aime pas lire du phonétique! [:toad666]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°251227
BENB
100% Lux.
Posté le 22-11-2002 à 10:11:00  profilanswer
 

sombresonge a écrit a écrit :

C dans le Heap c tout. Ensuite que le Heap soit effectivement en RAM ou dans le swap on s'en fiche. En tout cas ce qui est sur c que ça alloue pas dans la pile puiske la pile sert au variable local et au bon fonctionnement des apelles de fonction surtout




 
A priori quand tu fais un malloc l'allocation est faite dans la RAM, c'est ensuite qu'enventuellement cette zone sera mappee dans le swap en fonction de l'etat des ressources du systeme...

n°251250
nicolasm
Posté le 22-11-2002 à 10:50:47  profilanswer
 

drasche a écrit a écrit :

 
 
encore un cas où j'ai dû relire pour être sûr d'avoir saisi l'essence de ses propos :D
 
nicolasm > j'aime pas lire du phonétique! [:toad666]




C est super pratique surtout quand tu as appris a lire grace a ca!Et puis pour les textos ca aide car le nombre de caractere est limite!!!
 
En plus,je suis un peu faineant en ce qui concerne l ecriture mais la j ai fait un effort pour les yeux de ceux qui n aiment pas.

n°251252
lorill
Posté le 22-11-2002 à 10:54:48  profilanswer
 

nicolasm a écrit a écrit :

 
C est super pratique surtout quand tu as appris a lire grace a ca!




mouaif... Et quand tu as appris a lire du code ecrit par des porcs, c'est super pratique de rester goret...
 

nicolasm a écrit a écrit :

 
En plus,je suis un peu faineant en ce qui concerne l ecriture mais la j ai fait un effort pour les yeux de ceux qui n aiment pas.




merci :jap:

n°251259
drasche
Posté le 22-11-2002 à 11:12:34  profilanswer
 

suis 100% d'accord avec Lorill.  Ce n'est pas parce que les autres disent blanc que je vais dire blanc aussi.  On m'a appris à avoir un libre arbitre, je m'en sers, je n'ai aucune envie d'être un mouton.  D'autre part on ne peut pas préjuger à l'avance de qui va nous lire, en particulier sur un forum public.  Il y certainement des gens qui viennent, qui lisent, et qui tentent d'abord de décrypter le message.  Qu'un forum public devienne un ghetto où on développe sa propre grammaire/syntaxe/orthographe d'élite à deux balles, je ne suis pas d'accord.
 
Quant à coder comme un goret (pour citer Lorill), je dis non aussi, j'ai assez vu de crasses dans ma pourtant petite expérience professionnelle, et je ferai tout pour tendre vers le haut, et tenter de partager cette expérience avec mes pairs.
 
Le nombre de caractères est certainement limité pour un post, mais là, je viens de pondre une tartine sans faire vraiment faire défaut à mon idée de l'expression.  Donc écrire seulement une ou deux lignes dans un post ne justifie pas pour moi de "compresser" mes mots.  Sans rancune ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°251487
nicolasm
Posté le 22-11-2002 à 15:30:15  profilanswer
 

lorill a écrit a écrit :

 
mouaif... Et quand tu as appris a lire du code ecrit par des porcs, c'est super pratique de rester goret...
 
 
merci :jap:




Je parlais des textes et pas du code,il va de soi que j ecris mon code selon des normes qui me semble correcte pour que l on puisse me debugguer par exemple :jap:  
 
Et puis j avoues que j ai encore a apprendre mais celui qui pretend qu il sait tout est un ignorant!
Je veux pas etre medisant non plus mais tu fais parfois du code obscur pour les nouveaux et ca aussi c est GORET si tu l explique pas!

n°251493
lorill
Posté le 22-11-2002 à 15:36:43  profilanswer
 

nicolasm a écrit a écrit :

 
Je parlais des textes et pas du code,il va de soi que j ecris mon code selon des normes qui me semble correcte pour que l on puisse me debugguer par exemple :jap:  




Ben pourquoi pas en français alors ? Il y a aussi une syntaxe et une grammaire normalisées, tu sais. Même si ca n'a pas besoin de compiler...
 

nicolasm a écrit a écrit :

 
Je veux pas etre medisant non plus mais tu fais parfois du code obscur pour les nouveaux et ca aussi c est GORET si tu l explique pas!



 :whistle:  
 
Blague a part, on se connait ? T'as déja vu de mon code ? ou tu parles par rapport a mes messages ici ?
Et sinon, je ne suis pas pour commenter toutes les lignes, quand je programme, je m'adresse a un public de programmeur, censé connaitre le langage. Donc j'explique mes methodes et mes astuces (si y'en a, ce qui est rare), mais pas les trucs compréhensibles.

n°251498
nicolasm
Posté le 22-11-2002 à 15:41:14  profilanswer
 

drasche a écrit a écrit :

 
1:
suis 100% d'accord avec Lorill.  Ce n'est pas parce que les autres disent blanc que je vais dire blanc aussi.  On m'a appris à avoir un libre arbitre, je m'en sers, je n'ai aucune envie d'être un mouton.  D'autre part on ne peut pas préjuger à l'avance de qui va nous lire, en particulier sur un forum public.  Il y certainement des gens qui viennent, qui lisent, et qui tentent d'abord de décrypter le message.  Qu'un forum public devienne un ghetto où on développe sa propre grammaire/syntaxe/orthographe d'élite à deux balles, je ne suis pas d'accord.
2:
Quant à coder comme un goret (pour citer Lorill), je dis non aussi, j'ai assez vu de crasses dans ma pourtant petite expérience professionnelle, et je ferai tout pour tendre vers le haut, et tenter de partager cette expérience avec mes pairs.
3:
Le nombre de caractères est certainement limité pour un post, mais là, je viens de pondre une tartine sans faire vraiment faire défaut à mon idée de l'expression.  Donc écrire seulement une ou deux lignes dans un post ne justifie pas pour moi de "compresser" mes mots.  Sans rancune ;)




1 :  
je n ai pas dit le contraire et je pourrais continuer a ecrire comme je l ai fait en amont.Et pourquoi "elite" vous avez des ego demesures?
2 :  
coder comme un goret,ca ca depend des normes que vous utilisez car un developpeur a ces manies car il est homme avant tout mais pour ma part je ne pense pas car je suis plutot les conseils donnees notamment sur ce forum(cf note sur le debuggage).
3:
Il faut comprendre un enonce et la je parlais de textos!!!Pas de post!!!
 
Avouez mais que dans certain cas ca peut etre utile notamment quand vous voulez converser avec des gens qui utilise ce language.
 
Bon sur ceux j arrete car ce n est pas le sujet du topic.
 

n°251503
nicolasm
Posté le 22-11-2002 à 15:44:07  profilanswer
 

lorill a écrit a écrit :

 
Ben pourquoi pas en français alors ? Il y a aussi une syntaxe et une grammaire normalisées, tu sais. Même si ca n'a pas besoin de compiler...
 
 
 :whistle:  
 
Blague a part, on se connait ? T'as déja vu de mon code ? ou tu parles par rapport a mes messages ici ?
Et sinon, je ne suis pas pour commenter toutes les lignes, quand je programme, je m'adresse a un public de programmeur, censé connaitre le langage. Donc j'explique mes methodes et mes astuces (si y'en a, ce qui est rare), mais pas les trucs compréhensibles.




c est par rapport aux post en effet que je ne vous connait pas.
On peut etre un newbie a different niveuax et ca aussi faut pouvoir l evaluer . "newbie en programmation != newbie dans un langage."

n°251558
blackgodde​ss
vive le troll !
Posté le 22-11-2002 à 16:32:08  profilanswer
 

>> El_Gringo : c sur apres l'explication de Musaran, la question était très mal pausée ... merci a vs pour ces réponses, mais merci aussi si vs voulez continuer votre passionante discussion sur le francais de le faire en dehors de cette partie du forum.


---------------
-( BlackGoddess )-
n°252433
LeGreg
Posté le 24-11-2002 à 11:49:50  profilanswer
 

heap, stack, segment data.
 
Ca c'est le modele generalement admis en programmation sur des OS qui ont repris la semantique de la programmation structuree :).
 
Je voudrais juste preciser que ce ne sont pas les seuls modeles qui existent. Il y a aussi le mode "plat" ou l'on accede a la memoire de maniere unifiee, charge au programmeur de se fixer ses propres regles (c'est ce que fait malloc dans votre dos, il doit maintenir une liste des objets alloues et des parties libres).
 
Comme le precisait Musaran, la pile existe.. ou pas. C'est un heritage de la prog structuree et c'est juste super pratique. Mais rien n'empeche meme un compilateur C d'allouer des variables locales sur le tas en ne stockant un pointeur dans une pile qu'en cas de recursion. Certains langages limitent ce degre de recursion et permettent donc de se passer de pile (au sens du C).
 
A+
LeGreg


---------------
voxel terrain render engine | animation mentor
n°252607
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 24-11-2002 à 19:53:18  profilanswer
 

les allocations dynamiques ne se font pas forcrément dans la pile (cf. alloca)


Message édité par Taz@PPC le 24-11-2002 à 22:32:16

---------------
du bon usage de rand [C] / [C++]
n°252686
LeGreg
Posté le 24-11-2002 à 22:30:07  profilanswer
 

nicolasm a écrit a écrit :

 
c est par rapport aux post en effet que je ne vous connait pas.




 
???
 
LeGreg


---------------
voxel terrain render engine | animation mentor
n°252701
belgique
Posté le 24-11-2002 à 23:36:10  profilanswer
 

Personne n'a tranché alors ? j'arrive pas à suivre. Selon mes cours c'était clairement dans le heap. C'est la que les new du c++ se tapaient... Le stack, c'était pour gérer les appels de fonctions et tout ça.


---------------
Belgian connection
n°252733
Musaran
Cerveaulté
Posté le 25-11-2002 à 02:41:07  profilanswer
 

Taz@PPC a écrit a écrit :

les allocations dynamiques ne se font pas forcrément dans la pile (cf. alloca)


Tu veux dire le tas ?
 

belgique a écrit a écrit :

Personne n'a tranché alors ? j'arrive pas à suivre.


malloc et new allouent dans le tas/heap.
 
 
En fait, aucune méthode d'allocation en particulier n'est fondamentalement obligée d'exister.
 
Le statique/segment est nécessaire pour les éléments globaux, dont les fonctions dans la plupart des langages.
 
La pile est indispensable à la récursion, et à la transmission de valeurs entre fonctions sans registre. (Je rajoute les registres).
Effectivement très pratique.
 
Le tas est indispensable pour librement maîtriser la durée de vie à l'exécution.
 
 
On peut utiliser bien d'autres méthodes d'allocation, à coder soi-même.

  • Le buffer circulaire: Un peu comme une pile avec un fond, qui réapparait d'un côté d'u nbuffer quand elle sort de l'autre.
  • Le double buffer: L'un est valide pendant qu'on prépare le suivant. On inverse les deux, et on recommence.
  • La table d'allocation: Chaque case indique quelle est la suivante, les données sont placées dans une autre table en parallèle.

Et d'autres que je ne connaît même pas.
 
A noter que les patrons STL C++ ont un paramètre allocateur.
Un jour, je saurais peut-être m'en servir...


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°252741
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 25-11-2002 à 07:30:54  profilanswer
 

Musaran a écrit a écrit :

Tu veux dire le tas ?
 
malloc et new allouent dans le tas/heap.




 
j'ai trahi ma pensée.


---------------
du bon usage de rand [C] / [C++]
mood
Publicité
Posté le   profilanswer
 


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

  (malloc : question toute bete)

 

Sujets relatifs
Question moins confuse inside !!!!!!!Question simple sur les chaines de caratères
Question de Newbiequestion simple sur la boucle "pour"
[java] question diverses ![java] Question Newbie j'ai même un peu honte de la posée
Question de debutant ....MYSQL: la question con du jour...
question pour un projet a realiseQuestion que je me pose...
Plus de sujets relatifs à : (malloc : question toute bete)


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