Probleme d'allocation memoire avec new [C++] - C++ - Programmation
Marsh Posté le 05-09-2003 à 19:10:17
ReplyMarsh Posté le 05-09-2003 à 19:16:38
déjà du bon code
Code :
|
après, c'est complètement non fiable cette technique, mieux vau te tourner vers ton API si tu veux des infos
Marsh Posté le 05-09-2003 à 19:22:19
Ok pour le code propre,
par contre le probleme ne viens pas du gestionnaire des taches j'en suis sur (si il se plantait de 20 mo, ca se saurait, hein).
J'ai dans l'idée qu'il doit y avoir une taille minimum de 32 octets allouée par le new... car si on rajoute un autre int a la classe, la taille ne bouge pas.
Mais c'est une suppostion et j'aimerais avoir l'avis d'un connaisseur...
Marsh Posté le 05-09-2003 à 19:23:33
fykman a écrit : Ok pour le code propre, |
ça se sait
sinon regarde le code source de ton allocateur mémoire ... mince tu peux pas. tant pis
Marsh Posté le 05-09-2003 à 19:26:32
ReplyMarsh Posté le 05-09-2003 à 19:28:50
fykman a écrit : |
non, c'est un fait qu'on ne peut pas se fier au gestionnaire des tâches.
enfin classiquement, les allocateurs pour petits morceaux de mémoire sont basé sur le principe de la buddy list
Marsh Posté le 05-09-2003 à 19:43:13
Taz a écrit : enfin classiquement, les allocateurs pour petits morceaux de mémoire sont basé sur le principe de la buddy list |
quel est-il ?
Marsh Posté le 05-09-2003 à 19:43:46
fykman a écrit : |
parce qu'un allocateur de mémoire utilise de la mémoire à son propre usage pour garder trace de certaines informations (comme par exemple la taille d'un bloc alloué).
Marsh Posté le 05-09-2003 à 19:46:24
http://www.nist.gov/dads/HTML/buddysystem.html pas terrible
il est bien décris dans le O'Reilly sur le noyau Linux
bon je joue google
http://www.memorymanagement.org/articles/alloc.html
http://paul.rutgers.edu/~jarai/314/buddy.html
Marsh Posté le 05-09-2003 à 18:59:34
Voici un petit code de test :
Si je calcule theoriquement la quantite de memoire alloué :
3*sizeof(int) octets par objects = 12 octets/ objects
Donc pour 1 million d'objects :
12*100000 /1024 = 11718 Ko
Or si je regarde effectivement ce qui est alloué (gestionnaire des taches), j'ai :
32556 Ko
Donc 32 Mo alloué au lieu de 12 Mo prevu....
Quelqu'un peut m'expliquer pourquoi ?
Message édité par fykman le 05-09-2003 à 19:00:26