CRÉER DES TABLEAUX DE DONNÉES DE MANIÈRE DYNAMIQUE

Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
- - Dernière réponse : cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
- 21 déc. 2010 à 17:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52526-creer-des-tableaux-de-donnees-de-maniere-dynamique

Afficher la suite 
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
salut,

Tu devrais pouvoir agrandir l'index sans changer l'emplacement en mémoire en reservant une partie plus grosse mais en commitant morceau par morceau.

Le heap étant pour moi une interface entre la memoire virtuelle et une allocation memoire malloc, les éléments de petite taille pourraient avoir une gestion d'allocation différente de ceux de grosse taille. Chaque petit objet < 16 octets seraient stockés dans une liste chainée.

--HEAD
| DATA1
->NODE1--
DATA2 |
NODEN<-
DATAN

Je ne suis pas sur que cela puisse empêcher d'oublier de liberer un bloc mémoire devenu inutile dans le programme (leak). Windows libère la mémoire d'un process quoi qu'il en soit à la fermeture de ce process. Rien de gagné pour le système en lui-même.

@++
ToutEnMasm
Messages postés
552
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
26 mars 2016
1 -
Le changement d'adresse des tampons mémoires est un choix fait par le système pour optimiser la gestion de la quantité de mémoire disponible.En particulier éviter les trous inutilisables.
Même si c'était possible,je ne vois pas l'intérêt de le faire vu que ça diminue la quantité de mémoire disponible.
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
pas vraiment compris ce que tu racontes. Tu ne confondrait pas memoire virtuelle et memoire physique ?
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
A noter également que c'est inutilisable en environnement multithread.

C'est évidement faisable et assez simplement ce que je dis. Les petits blocs entre les gros blocs sont utilisés pour l'allocation des petits objets justement.
cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
ici, tu trouveras la fonction VirtualAlloc:
http://msdn.microsoft.com/en-us/library/aa366887%28VS.85%29.aspx

Si la mémoire avait dû être gérée par index comme les HINSTANCE et autres handles, je ne pense pas qu'ils aient eut besoin de l'ingeniosité de Toutenmasm ;-)