[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: STL Container leaks/exception problem
From: |
Bernd Strieder |
Subject: |
Re: STL Container leaks/exception problem |
Date: |
Thu, 08 Jun 2006 12:07:52 +0200 |
User-agent: |
KNode/0.10.2 |
Hello,
Kenneth Karoliussen wrote:
> Hi,
>
> I'm currently working on FreeBSD with and using GNU g++ v3.4.4.
>
> The following code leaks and sometimes crashes with a bus error.
I can confirm the leak with gcc as delivered with SuSE 9.3.
gcc version 3.3.5 20050117 (prerelease) (SUSE Linux)
It is a stack leak, the stacks keeps growing, as observable with a
debugger.
g++ 4.0.3, 3.4.6, 3.4.4, 3.4.3, 3.3.6, and 3.3.4 do not to show the
problem, but g++ 3.3.5 or its prereleases might.
I think this is an error in older gcc releases, where stack space for
temporaries is not reused, where it should. Another workaround seems to
be putting the code within the try block into a function of it's own.
This seems to cleanup the stack.
void madness()
{
sayA(getA());
}
int main(int argc, char* argv[])
{
while (true)
{
try {
madness() ;
} catch (const char* const c) {
if (c) cerr <<"Exception: " <<c <<endl;
}
};
Bernd Strieder