Kleine Info zu placement new erbeten.
-
Was genau ist placement new?
Ich lese das hier so oft im Forum und in dem einem PDF über Policies
http://www4.informatik.uni-erlangen.de/Lehre/SS04/HS_AspectOS/Ergebnisse/PBD-Folien.pdf habe ich es auch gelesen..Ich habe folgenden Code (aus dem PDF; Seite 6):
template<classT> classMallocCreator { public: staticT* Create() { void* buf= malloc(sizeof(T)); if (!buf) return0; // oder: Exception werfen return new(buf) T; // placement new } };Bedeutet placement new "nur", dass ich new einen passenden Speicherbereich angeben kann?
-
schlicht und ergreifend ersetzt du den operator new von c++. (leider ist es nicht so einfach
)nützlich für zb:
- für einen memory pool
- einen anderen allocater(malloc) benutzen möchtest
- performance (da new langsam ist)
- speicher sparen (new legt ein paar extra bytes zum löschen mit an)
- garbage collectordas buch was ich vorhin empfohlen habe beschreibt diese themaik sehr gut und bietet einen smallobjektallocator mit an.
-
Wenn ich daruch new ersetze, muss ich dann auch delete erseten?
-
hehejo schrieb:
Wenn ich daruch new ersetze, muss ich dann auch delete erseten?
in der regel ja
-
ok, und wie sähe dieses delete beim obigen new aus?
Etwas mit free, oder?