
Anybody interested in this or could point me to a different boost list? Michael wrote:
Hello,
I figured that shared_ptr (boost 3.4, but I don't think this is really a boost problem) will lose memory in the following example
#include
struct X { int y; }; typedef boost::shared_ptr<X> XRef;
XRef getx() { throw 0; }
int main(int argc, char** argv) { while (true) { XRef myX; try { myX = getx(); } catch(...) { } } }
Compile: g++ -I/usr/local/include test.C -o test
On every iteration of the while loop it loses memory and after approx. 1 million iterations it dies with signal 10 or 11.
Changing that pattern to try { XRef y = getx(); myX = y; } catch(...) { }
fixes the problem (I assume in that case it will call shared_ptrs copy constructor instead of its assignment operator).
Platform is FreeBSD 6, gcc 3.4.6. It only happens when compiled like above (without optimization). On optimization levels 2 and above (-O2) it works ok. Maybe somebody using gcc 3.4 can check if this also happens on other platforms. gcc 4 works ok without any issues, so I assume this is a compiler problem. It might still be a good idea to put a warning in the documentation about this.
cheers Michael
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users