Pages : 1
#1 Le 31/03/2007, à 15:18
- brutor
C, Allocation virtuelle
En C, sous linux, quelle fonction permet d'allouer de la mémoire virtuelle?
Merci pour vos réponses.
Hors ligne
#2 Le 31/03/2007, à 15:44
- tiky
Re : C, Allocation virtuelle
Tu as:
void * malloc( size_t size );
Cette fonction permet d'allouer de la mémoire, sinon pour libérer la mémoire c'est simplement:
void free( void * ptr );
note: il est conseillé de mettre le pointeur à NULL après un free et avant un malloc ainsi que de toujours vérifier si une allocation c'est bien passé.
Les 2 fonctions sont accessible depuis stdlib.h.
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#3 Le 31/03/2007, à 17:59
- brutor
Re : C, Allocation virtuelle
malloc et free sont des fonctions de la librairie standart du language C, ecrites à partir des fonctions du systèmes d'exploitation. Moi je veux la fonction du système d'exploition pour les allocation de mémoire virtuelle car elle est plus performant que malloc pour de grosses allocations de mémoires.
Sous Windows c'est VirtualAlloc.
Hors ligne
#4 Le 31/03/2007, à 18:30
- tiky
Re : C, Allocation virtuelle
malloc et free sont des fonctions de la librairie standart du language C, ecrites à partir des fonctions du systèmes d'exploitation. Moi je veux la fonction du système d'exploition pour les allocation de mémoire virtuelle car elle est plus performant que malloc pour de grosses allocations de mémoires.
Sous Windows c'est VirtualAlloc.
Ta question n'était pas claire du tout, je sais très bien qu'elles font partie de la librairie standard.
J'ai un gros livre sur la programmation C sous linux et dans le chapitre gestion de la mémoire il ne donne aucune autre fonction que malloc / free / etc... Maintenant si tu veux la fonction il suffit de télécharger les sources de la libc et de chercher le code de malloc
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#5 Le 01/04/2007, à 00:03
- Watchwolf
Re : C, Allocation virtuelle
http://www.koders.com/c/fid4AD816F7EF1026547DFC0567B02D2D912DCB8622.aspx
Hors ligne
#6 Le 01/04/2007, à 18:56
- tiky
Re : C, Allocation virtuelle
@Watchwolf: je crois que ton code ne fonctionne que sous windows comme il est précisé dans le code.
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#7 Le 02/04/2007, à 16:02
- Watchwolf
Re : C, Allocation virtuelle
ah je n'avait pas regardé, dsl
enfin bon dire que malloc() c'est lent je trouve ca byzarre qd mm. Sinon il n'a qu'a include de l'assembleur dans son code
Hors ligne
#8 Le 02/04/2007, à 16:26
- coca25
Re : C, Allocation virtuelle
je crois que l'equivalent est mmap
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/mmap.2.html
mais ce n'est interessant que si la memoire alloué doit etre accessible par plusieurs process
Hors ligne
#9 Le 02/04/2007, à 18:29
- tiky
Re : C, Allocation virtuelle
Les instructions qu'exécute malloc() en plus d'allouer la mémoire sont très importantes, en lisant quelques lignes du code de la glibc, j'ai pu voir qu'il y avait pas exemple des lock() et unlock() un peu partout, ils sont sans doute pas là pour faire jolie mais par exemple pour éviter des accès concurrentielles. En plus ces instructions ne sont exécuté qu'une fois pour chaque l'allocation, donc pour optimiser ton programme il faut chercher à faire le moins de malloc() possible mais de plus grande taille ( je dis ça mais je suis peut-être complètement à côté de ce que tu veux faire ).
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
Pages : 1