Est-ce que quelque chose:Comment contraindre malloc à une région spécifique de la mémoire
- Alloue/Libère/réalloue beaucoup d'objets de taille variable sans fragmentation (essentiellement ce que
malloc
fait) et - garde la trace de toute la mémoire pages utilisées dans ces allocations afin que je puisse
- plus tard
mprotect
toutes ces pages pour les rendre en lecture seule - de préférence sans verrouillage - tous les accès sera mono-thread
- qui fonctionne sur Linux et OS X, de préférence avec quelque chose d'équivalent sur Windows?
Je ne peux pas penser à un moyen de le faire avec les fonctions d'allocation de mémoire standard. La seule stratégie qui vient à l'esprit est l'utilisation d'un pool de mémoire personnalisé au lieu de malloc
. Donc ma question est: est-il un moyen de le faire sans une coutume malloc
ou (s'il n'y a pas) des suggestions sur quoi utiliser?
je pouvais envelopper malloc
et garder une trace de toutes les pages qu'il a utilisé assez facilement comment puis-je vous garantis qu'une fois que je l'ai appelé mprotect
sur ces pages malloc
ne pas essayer d'utiliser la mémoire qui est « pris », soit avant le début ou après la fin d'un bloc alloué dans l'une des pages affectées?
que voulez-vous dire par "plus tard"? après le processus se termine? Voulez-vous vraiment dire "pages" (mémoire virtuelle) ou "cadres" (mémoire physique)? – Elazar
Avez-vous seulement besoin d'allouer de la mémoire? Ou encore pour le désaffecter? Et quelle est votre utilisation? – thejh
malloc normal ne fonctionnera pas par ex. car pour les petites allocations, les pages sont partagées entre plusieurs choses allouées en utilisant malloc – thejh