Gcc und placement new
-
Hallo,
mein GCC 3.3.5 macht bei folgendem Code den Fehler, dass allocate() zweimal aufgerufen wird. Kann mal jemand testen, ob dies beim GCC 3.4.x oder 4.0.x noch der Fall ist?
#include <iostream> #include <cstdlib> class Manager { public: Manager() { std::cout << "Manager called: this: " << this << std::endl; throw int(1); } }; void * allocate() { void * ptr = malloc(sizeof(Manager)); std::cout << "Ptr: " << ptr << std::endl; return ptr; } int main() { try { new(allocate()) Manager(); } catch (...) { } }
-
http://www.desy.de/user/projects/C++/g++faq/placement_new_syntax.html
Villeicht hilft das, habs net gelesen.
-
FireFlow schrieb:
http://www.desy.de/user/projects/C++/g++faq/placement_new_syntax.html
Villeicht hilft das, habs net gelesen.
Diese Frage bezieht sich auf eine uralte Version vom GCC (vor 2.3.1). Mein Problem ist auch nicht, dass er die Syntax nicht akzeptiert, sondern, dass er im Falle einer Exception fehlerhaften Code generiert.
-
> g++ -v gcc-Version 3.4.5 20050605 (prerelease) (Debian 3.4.4-0) > g++ -Wall -W -std=c++98 alloc.cpp > ./a.out Ptr: 0x804a008 Manager called: this: 0x804a008
HTH HAND
-
kingruedi schrieb:
> g++ -v gcc-Version 3.4.5 20050605 (prerelease) (Debian 3.4.4-0) > g++ -Wall -W -std=c++98 alloc.cpp > ./a.out Ptr: 0x804a008 Manager called: this: 0x804a008
HTH HAND
Danke