Bonjour,
Dans le cadre d'un jeu réalisé par des amis, j'ai réalisé une petite DLL de cryptage/decryptage de fichiers en C++ sous VC++. Pour en optimiser les performances, j'ai convertit la partie la plus critique de l'agorithme en assembleur, avec un gain de temps impressionnant. Cependant j'aimerais maintenant convertir le reste du code en assembleur sous MASM32 (en fait c'est surtout que mes amis me demandent une DLL aussi petite que possible).
Et là où je bloque, c'est sur la façon de réaliser les allocations dynamiques de mémoire. J'y ai passé plusieurs jours sans y parvenir.
J'ai tenté d'utiliser HeapAlloc et VirutalAlloc sans grand succès. Au premier appel de la fonction, tout fonctionne parfaitement, mais dès le second appel, le programme plante avec une erreur de violation d'accès. A des fins de tests, j'ai alors fait une fonction inutile qui se contente d'appeler HeapAlloc, d'écrire dans le premier octet du buffer ainsi alloué, puis de libérer le buffer avec HeapFree. Je me suis retrouvé avec le même problème, à savoir que le premier appel fonctionnait, mais pas les suivants. Pourtant, HeapAlloc ne me retourne pas d'erreur.
Je précise que je ne suis pas encore passé sous MASM32.
Ma question est donc dans un premier temps: quelle est la façon correcte de faire une allocation dynamique de mémoire en assembleur ?
Si par la suite je n'y arrive toujours pas, je posterai le code de la fonction.
En vous remerciant par avance pour vos réponses.
Partager