Sorry, that should say:

"whose constructor is:

explicit numpunct(
  size_t _Refs = 0
);"

Bill.

2009/1/10 Bill Hart <goodwillh...@googlemail.com>:
>
> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to