我有一些不寻常的要求,即变量应该始终存在于堆上而不是堆栈上。现在我尝试使用私有析构函数和类的静态方法来执行此操作,该方法将简单地获取指针并在其上调用 delete。
Class A
{
public :
static void method(const A* ptr)
{
delete ptr;
}
private :
~A();
};
但是现在我很想看到更好的替代方案,我想到的一件事是,如果我可以为每个方法添加一些预检查以查看变量是在堆栈上还是在堆上,那么我不必声明静态方法。谁能告诉我该怎么做?我刚想到一个解决方案是使用 sbrk(0) 或 pthread API 来获取当前堆栈的边界,然后将其与类变量的地址进行比较,但不可移植。
谢谢尼拉吉·拉蒂