ReAllocateMemory et la fragmentation mémoire
ReAllocateMemory et la fragmentation mémoire
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 ?
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 ?
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
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
Re: ReAllocateMemory et la fragmentation mémoire
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.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 ?
Re: ReAllocateMemory et la fragmentation mémoire
Merci beaucoup ! J'ai testé c'est pas mal ! Mais je voudrais éviter d'utiliser des libs externe !Denis a écrit :J'utilise ce code pour essayer de limiter la fragmentation de la mémoire sous Windows
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 !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

-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
Re: ReAllocateMemory et la fragmentation mémoire
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)).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
http://www.purebasic.fr/english/viewtop ... ipsprite3d
Re: ReAllocateMemory et la fragmentation mémoire
Il ne s'agit pas d'une lib externe (sens des lib PB) mais d'une dll Microsoft, le noyau des os.Thyphoon a écrit :Merci beaucoup ! J'ai testé c'est pas mal ! Mais je voudrais éviter d'utiliser des libs externe !Denis a écrit :J'utilise ce code pour essayer de limiter la fragmentation de la mémoire sous Windows
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.
Re: ReAllocateMemory et la fragmentation mémoire
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 ...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.


