Kann eine C ++ - Klasse feststellen, ob sie sich auf dem Stack oder auf dem Heap befindet?
ich habe
class Foo {
....
}
Gibt es eine Möglichkeit für Foo, sich zu trennen:
function blah() {
Foo foo; // on the stack
}
und
function blah() {
Foo foo* = new Foo(); // on the heap
}
Ich möchte, dass Foo in der Lage ist, verschiedene Dinge zu tun, je nachdem, ob es auf dem Stapel oder auf dem Haufen zugewiesen ist.
Bearbeiten:
Viele Leute haben mich gefragt, warum das so ist.
Die Antwort:
Ich verwende gerade einen GC mit Nachzählung. Ich möchte jedoch auch die Möglichkeit haben, mark & sweep auszuführen. Dazu muss ich eine Reihe von "root" -Pointern markieren - das sind die Zeiger auf dem Stapel. Daher möchte ich für jede Klasse wissen, ob sie im Stapel oder auf dem Haufen sind.