Valgrind : la mémoire est toujours accessible avec un programme trivial utilisant
Cette question concerne un avertissement de Valgrind concernant la mémoire encore accessible dans un programme trivial qui inclut le
Problème :
Un programme trivial qui inclut le
#include <iostream> int main() { return 0; }
Réponse :
L'avertissement Valgrind n'est pas un bug, mais un fonctionnalité. De nombreuses implémentations de la bibliothèque standard C utilisent leurs propres allocateurs de pool de mémoire. La mémoire des objets détruits n'est pas immédiatement libérée et restituée au système d'exploitation, mais conservée dans le pool pour une réutilisation ultérieure. Les pools de mémoire ne sont pas non plus libérés à la fin du programme, ce qui amène Valgrind à signaler que la mémoire est toujours accessible.
Solution :
Il existe plusieurs façons de désactiver la mise en cache des pools. et forcer la STL à utiliser malloc et libérer de la mémoire dès que possible :
g++ -D__USE_MALLOC ...
export GLIBCPP_FORCE_NEW=1
export GLIBCXX_FORCE_NEW=1
Remarques supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!