I've been taking a look at the memory leak in t-locale. According to the valgrind log there is a leak due to operator new(unsigned long) in set_point when called from check_output().
Here is the relevant code: char point_string[2]; #if HAVE_STD__LOCALE // Like std::numpunct, but with decimal_point coming from point_string []. class my_numpunct : public numpunct<char> { public: explicit my_numpunct (size_t r = 0) : numpunct<char>(r) { } protected: char do_decimal_point() const { return point_string[0]; } }; #endif void set_point (char c) { point_string[0] = c; #if HAVE_STD__LOCALE locale loc (locale::classic(), new my_numpunct ()); locale::global (loc); #endif } void check_output (void) { static char point[] = { '.', ',', 'x', '\xFF' }; for (size_t i = 0; i < numberof (point); i++) { set_point (point[i]); ostringstream got; // <snip> } } It seems to me that the "new my_numpunct ()" is the culprit. The constructor just calls the constructor for the standard numpunct class, whose destructor is: explicit numpunct( size_t _Refs = 0 ); As size_t is probably an int of 4 bytes, it looks like that never gets cleaned up. Apparently the destructor for that class is protected. My knowledge of C++ doesn't enable me to see a solution to this. Does anyone else know how to force cleanup of excrement like this? Bill. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "mpir-devel" group. To post to this group, send email to mpir-devel@googlegroups.com To unsubscribe from this group, send email to mpir-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/mpir-devel?hl=en -~----------~----~----~----~------~----~------~--~---