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.

Antworten auf die Frage(15)

Ihre Antwort auf die Frage