ReAllocateMemory et la fragmentation mémoire

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

ReAllocateMemory et la fragmentation mémoire

Message par Thyphoon »

Est ce qu'une utilisation intensive de ReAllocateMemory risque de défragmenter la mémoire ?
J'ai dans l'idée d'utilisé AllocateMemory pour gérer des animations et utiliser ReAllocateMemory a chaque fois pour rajouter une image a l'animation , mais j'ai peur qu'a long terme ça ne soit pas si bien ... Qu'en pensez vous ?
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

J'utilise ce code pour essayer de limiter la fragmentation de la mémoire sous Windows

Code : Tout sélectionner

     ; tente d'utiliser la défragmentation de la mémoire (Low-fragmentation Heap)
     #HeapCompatibilityInformation = 0
     
     ;// ouvre la dll Kernel32
     lib = OpenLibrary(#PB_Any, "Kernel32.dll")
     If lib
          ;// retrouve le pointeur sur les infos mémoire
          *HeapSetInformation = GetFunction(lib, "HeapSetInformation")
          If *HeapSetInformation
               GetProcessHeap = GetProcessHeap_()
               If GetProcessHeap
                    HeapFragValue = 2
                    ;// tente la limitation de fragmentation mémoire
                    CallFunctionFast(*HeapSetInformation, GetProcessHeap, #HeapCompatibilityInformation, @HeapFragValue, SizeOf(HeapFragValue))
               EndIf
          EndIf
          CloseLibrary(lib) : lib = 0
     EndIf
     
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: ReAllocateMemory et la fragmentation mémoire

Message par beauregard »

Thyphoon a écrit :Est ce qu'une utilisation intensive de ReAllocateMemory risque de défragmenter la mémoire ?
J'ai dans l'idée d'utilisé AllocateMemory pour gérer des animations et utiliser ReAllocateMemory a chaque fois pour rajouter une image a l'animation , mais j'ai peur qu'a long terme ça ne soit pas si bien ... Qu'en pensez vous ?
les pro de l'assembleur sauront te répondre. Au cas où, pour les sprites 3D, y a clipsprites3D de s.m. modifié depuis le mois de mars et qui marche très bien avec directx9.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: ReAllocateMemory et la fragmentation mémoire

Message par Thyphoon »

Denis a écrit :J'utilise ce code pour essayer de limiter la fragmentation de la mémoire sous Windows
Merci beaucoup ! J'ai testé c'est pas mal ! Mais je voudrais éviter d'utiliser des libs externe !
beauregard a écrit :les pro de l'assembleur sauront te répondre. Au cas où, pour les sprites 3D, y a clipsprites3D de s.m. modifié depuis le mois de mars et qui marche très bien avec directx9.
Merci ! Mais d'aussi d'éviter des codes que je ne maitrise pas et qui ne sont pas 100% Purebasic J'ai trop souvent regretter des qu'une function n'étais pas a jour pour Purebasic et que j'étais incapable de la modifier, mais je vais quand même aller voir .. a quoi ça ressemble !
Merci :D
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: ReAllocateMemory et la fragmentation mémoire

Message par beauregard »

Thyphoon a écrit :Merci ! Mais d'aussi d'éviter des codes que je ne maitrise pas et qui ne sont pas 100% Purebasic J'ai trop souvent regretter des qu'une function n'étais pas a jour pour Purebasic et que j'étais incapable de la modifier, mais je vais quand même aller voir .. a quoi ça ressemble !
Merci :D
une commande élaborée par 2 codeurs très doués( J.Baker et Fluid Byte), tu peux l'utiliser sans soucis( la seule contrainte, c'est que chaque image doivent avoir la même taille( par exemple une planche de sprite composée uniquement d'image de 32*32)).
http://www.purebasic.fr/english/viewtop ... ipsprite3d
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Merci, je l'avais trouvé hier et je l'avais testé ! je l'ai mis de côté mais je ne pourrais pas m'en servir pour mon projet actuel ! :P
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: ReAllocateMemory et la fragmentation mémoire

Message par Anonyme2 »

Thyphoon a écrit :
Denis a écrit :J'utilise ce code pour essayer de limiter la fragmentation de la mémoire sous Windows
Merci beaucoup ! J'ai testé c'est pas mal ! Mais je voudrais éviter d'utiliser des libs externe !
Il ne s'agit pas d'une lib externe (sens des lib PB) mais d'une dll Microsoft, le noyau des os.
Tous les OS Microsoft ont cette dll, pourquoi s'en priver ?

beaucoup de fonctions PB utilisent les dll des OS, je ne vois pas ou est le problème, elles sont utilisables facilement et dans ce cas aide à la gestion de la mémoire Windows, celle utilisée et allouée par PB qui ne fait que wrapper les API windows.

Si tu utilises linux ou MAC, il faut regarder les fonctions système dispo sous ces OS.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: ReAllocateMemory et la fragmentation mémoire

Message par Thyphoon »

Denis a écrit : Il ne s'agit pas d'une lib externe (sens des lib PB) mais d'une dll Microsoft, le noyau des os.
Tous les OS Microsoft ont cette dll, pourquoi s'en priver ?

beaucoup de fonctions PB utilisent les dll des OS, je ne vois pas ou est le problème, elles sont utilisables facilement et dans ce cas aide à la gestion de la mémoire Windows, celle utilisée et allouée par PB qui ne fait que wrapper les API windows.

Si tu utilises linux ou MAC, il faut regarder les fonctions système dispo sous ces OS.
je ne suis pas contre. J'ai changé ma façon de faire donc je n'ai plus de défragmentation de la mémoire. Apres le problème c'est pour maintenir ton programme, en fonction des version de purebasic, de l'os, etc... moins tu as de dépendance extérieur mieux c'est. Je sais bien que purebasic utilise les APIs des OS, mais c'est transparent pour moi. Il y a quelques années j'avais fait un petit jeu entièrement basé sur une libs, la libs a pas été maintenu, et lorsque j'ai voulu faire évoluer mon jeu, je me suis retrouvé coincé ... Et j'ai finis par laisser tomber ... :P Bon maintenant , des fois il n'y a a pas le choix, et il y a de très bon code sur les forums (comme celui que tu m'as donnée ;)) Et je les utilises...mais j'essaye d'éviter malgré la tentation ...:D
Répondre