【发布时间】:2011-01-04 12:17:09
【问题描述】:
我有
class Foo {
....
}
有没有办法让Foo能够分离出来:
function blah() {
Foo foo; // on the stack
}
和
function blah() {
Foo foo* = new Foo(); // on the heap
}
我希望 Foo 能够根据它是在堆栈上还是在堆上分配来做不同的事情。
编辑:
很多人问我“为什么要这样做?”
答案:
我现在正在使用 ref-counted GC。但是,我也希望有能力进行标记和扫描。为此,我需要标记一组“根”指针——这些是堆栈上的指针。因此,对于每个类,我想知道它们是在堆栈中还是在堆中。
【问题讨论】:
-
分离出来,如in?恕我直言,静态分配是在堆栈上完成的,而像“new”这样的分配将在堆上完成。
-
为什么需要区分它们,用例是什么?
-
这个问题能直接回答吗?不管这个人是否知道他在做什么,这对于我们这些真正需要它的人来说可能很有用。
-
在茫然困惑中翻白眼:-(
-
@Anacrolix;它不能便携,它不会告诉你任何有用的东西,如果你认为你需要它,那你几乎肯定是错的。
标签: c++ heap-memory stack-memory