Farfadet07
Messages postés3Date d'inscriptionjeudi 8 mars 2007StatutMembreDernière intervention13 avril 2007
-
13 avril 2007 à 12:40
Farfadet07
Messages postés3Date d'inscriptionjeudi 8 mars 2007StatutMembreDernière intervention13 avril 2007
-
13 avril 2007 à 23:28
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 ?
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 13 avril 2007 à 14:03
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)