Ich würde das Ding nicht benutzen. Die Motivation scheint zu sein, das anlegen dynamischer Objekte zu beschleunigen. Weißt du, dass das wichtig sein wird, oder hast du bloß gehört, dass man das eben so machen würde?
Abgesehen davon, hat dein Code eine Reihe Probleme:
- Was macht dispose? Danach ist dein Objekt unbrauchbar und alle spätere Alloc aufrufe machen nicht mehr das, was du denkst, das sie tun (Zeiger auf gültigen Speicher liefern). Lösche die Methode und beschränke dich auf den d-tor.
- Was macht Free? Du setzt einfach nur den Speicher zurück, aber was, wenn du Objekte nicht in der Reihenfolge löschst, wie du sie anlegst? (Dann wird das nächste angelegte Objekt Speicher eines anderen Objektes benutzen - ganz schlecht)
- Wofür sollte man den Marker hohlen wollen? Das sind interne Klassendetails, die Außenstehende nichts angehen. Also biete auch keinen Zugriff darauf.
- Wie willst du Objekte anlegen? malloc und free sind kein C++ und haben unter anderem das massive Probleme, dass weder c'tor noch d'tor aufgerufen wird. Das ist mega schlecht. Mit deiner Klasse kannst du dir höchstens Speicher holen und dann sowas wie placement-new benutzen (
http://www.parashift.com/c++-faq/placement-new.html). Natürlich könnte man den new Operator irgendwie überladen, die Frage ist nur, ob du weißt wie, und das auch fehlerfrei hinbekommst.
Kurz gesagt: Du tust vermutlich etwas aus falschen Motiven und bist zudem zu unerfahren, als das du es richtig tun würdest. Das wird dir einfach nur Probleme machen, und nichts bringen. Entweder du benutzt eine fertige Lösung, oder du verzichtest einfach auf Allokatoren (du kommst viel besser ohne aus, als du denkst). Fehlerhaftes Speichermanagement wird dir später extrem lustige, und schwer zu findende Fehler bescheren, sowas möchte man einfach nicht in seinem Programm haben.
Ich will gar nicht behaupten, den perfekten Stack-Allocator programmieren zu können, in Wirklichkeit habe ich damit nämlich keinerlei Erfahrung. Aber ich habe auch noch nie einen benötigt und ich sehe, dass dein Code falsch ist und so nicht benutzt werden kann. Verzichte also einfach darauf und konzentriere deine Arbeit auf sinnvollere Dinge.