This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
libstdc++/3904: STL does not use ::operator new as required in standard
- To: gcc-gnats at gcc dot gnu dot org
- Subject: libstdc++/3904: STL does not use ::operator new as required in standard
- From: matti dot rintala at tut dot fi
- Date: Tue, 31 Jul 2001 22:23:53 +0300
- Cc: matti dot rintala at tut dot fi
- Reply-To: matti dot rintala at tut dot fi
>Number: 3904
>Category: libstdc++
>Synopsis: STL does not use ::operator new as required in standard
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Jul 31 12:26:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Matti Rintala
>Release: 3.0
>Organization:
>Environment:
System: Linux mustikkakukko.cs.tut.fi 2.4.5 #1 Tue May 29 19:53:48 EEST 2001 i686 unknown
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc-3.0/configure --host=athlon-pc-linux-gnu --prefix=/usr/local/gcc-3.0 --enable-shared --enable-threads --with-cpu=athlon --enable-cpp
>Description:
ISO C++ standard states that by default STL containers use
std::allocator to obtain memory. std::allocator in turn is required to
use ::operator new and ::operator delete. However, STL in GCC
specifically detects the use of std::allocator and uses malloc() in
this case (this behaviour comes from the SGI STL code base). This
breaks programs which override the default ::operator new and
::operator delete.
I understand the need for customised dynamic memory handling
(which its own free memory lists etc) in STL,
because it increases performance. However, even these kinds of
optimisations should use ::operator new instead of malloc() so that
they don't break the standard.
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: