Counting amount of memory allocated?

Benjamin Kosnik bkoz@redhat.com
Mon Nov 4 13:34:00 GMT 2002


>How do I go about disabling pool allocation that is happening for these
>containers?  Ideally I would like to be able to disable it globally with a
>single #define (such as -D__USE_MALLOC), so that I can just enable it for
>debug builds.  Do I really have to recompile libstdc++ to do this, or is
>there an easier way?

RTFM

GLIBCPP_FORCE_NEW

http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html#3

Also, you can explicitly force "C" library bits to be de-allocated with


#include <locale>
#include <cassert>

extern "C" void __libc_freeres(void);
extern "C" int __cxa_atexit(void (*func) (void *), void *arg, void *d);

void test01()
{
  using namespace std;
  bool test = true;

  locale loc06("fr_FR");
  locale loc09(loc06, "C", locale::ctype);
  assert (loc09.name() != "fr_FR");
}

int main()
{
  // Make glibc tear down all data structures on exit.
  extern void* __dso_handle __attribute__ ((__weak__));
  __cxa_atexit((void (*) (void *)) __libc_freeres, NULL,
               &__dso_handle ? __dso_handle : NULL);

  test01();
  return 0;
}


I've been thinking of writing up a C++ debugging HOWTO.

-benjamin



More information about the Libstdc++ mailing list