Memorystreams

Messages postés
3
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
13 avril 2007
-
Messages postés
3
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
13 avril 2007
-
Bonjour,

Dans la gestion mémoire de mon programme, je souhaiterais stocker dans un stream toutes les données non nécessaires à un moment donné (notamment des images). Lorsque le programme en a besoin, il va les rechercher dans le stream. L'avantage des streams est qu'on peut utiliser le même code pour stocker en memoire et sur fichier ; pour la vitesse, j'utilise le memorystream et pour gagner de la mémoire, le filestream.
Mon problème, c'est l'allocation mémoire du memorystream. A priori, le stream est très dynamique et je ne connais pas sa taille au départ. J'ai essayé d'utiliser un memory stream sans allouer de la mémoire (pas d'appel à setsize), et ça marche ! Par contre, y a-t-il un risque de conflit mémoire en procédant comme ça ? Faut-il allouer de la mémoire au memorystream avant de l'utiliser, ou peut-on réallouer plus ou moins de mémoire via setsize en cours d'utilisation ?

2 réponses

Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
2
Non non non ! ^^ Le TMemoryStream alloue tout seul la mémoire comme un grand.
En fait, il ne faut même pas utiliser SetSize() sauf si tu vex absolument redimentionner ton flux.

Pour écrire, tu utilises les méthode Write() et WriteBuffer() (voir l'aide sur la différence).
Ensuite, pour relire, tu te positionne à l'endroit voulu avec Seek() et tu lis avec Read() ou ReadBuffer().

Voila ! (et pour tout vider, tu libère le flux ^^ bien sûr)

++
Flo
Messages postés
3
Date d'inscription
jeudi 8 mars 2007
Statut
Membre
Dernière intervention
13 avril 2007

OK merci, en plus c'est ce que je voulais entendre