N
Dravere schrieb:
Damit deine SmartPtr Implementation richtig funktioniert, musst du einen garantierten Aufruf von Copy() und Destroy() haben. Sonst geht deine Klasse so oder so nicht. Wenn ich mir allerdings deinen Code ansehe, kann ich nicht erkennen, dass du da irgendwo keine Garantie dafür abgeben könntest.
Doch; wenn ich nämlich den SmartPtr -Standardkonstruktor aufrufe, dann zeigen die Funktionszeiger auf Dummy-Funktionen.
Dravere schrieb:
Nein, das Problem wird absolut am richtigen Ort gelöst. Das Problem sind hier nicht die vielen kleinen Reservationen. Wenn man etwas auf dem Heap legen muss, dann muss man es auch dort ablegen.
Nein, man schafft sich Probleme, die man mit einer anderen Technik eindämmt, aber nicht behebt. Genau darum geht es mir: Ich kann mit einer besseren Implementierung Allokationen vermeiden. Nämlich dort, wo nur ein Nullzeiger gespeichert wird. Dafür braucht man keinen Reference-Counter.
Dravere schrieb:
Scheu dich nicht davor, etwas auf dem Heap abzulegen, sei es noch so klein.
Warum das? Natürlich überlege ich es mir gut, bevor ich etwas auf den Heap lege, und vermeide es wo möglich und sinnvoll. Und verwende tendenziell eher std::vector<char> als std::list<char> . Was ist daran schlecht?
Gerade wenn man keinen Small-Object-Allocator nutzen kann, ist sowas entscheidend. Aber auch mit diesem schadet es nicht, sich genauere Überlegungen anzustellen.
Dravere schrieb:
Ich will dir ja nicht die Laune verderben, aber die Smart-Pointer von Boost können dies schon lange
Das ist mir bewusst, aber ich habe da nie länger darüber nachgedacht. Und nahezu alles hat es wohl in irgendeinem C++-Code schon gegeben.