我希望能够在运行时确定指针是否在堆栈上,原因有很多.就像我将它传递给函数调用一样,我可以确定是否需要克隆它.或者我是否需要删除它.
在Microsft C(VC 6,7,8)中,是否有一种方法可以检查指针,看它是否在堆栈中?我只关心在拥有该对象所在堆栈的线程上确定这一点.
就像是
static const int __stack_size和__stack_top
???? 谢谢!
所以我正在从一个"拥有"的对象模型迁移到我正在做的项目中的"托管"对象模型.目前要做一件新的事情
Thing *thing = new Thing();
Run Code Online (Sandbox Code Playgroud)
并摆脱它并摧毁它所有者
delete thing
Run Code Online (Sandbox Code Playgroud)
现在有很多"删除东西",其中很多都是从Thing指针的超类删除,因为超类有一个虚拟析构函数.
现在在托管模型中有一个带有虚拟析构函数的基类,管理器将删除它.用户应该在其上调用"release"而不是删除.
所以我想在编译时以某种方式拒绝"删除东西"作为编译时错误.由于基础上的虚拟析构函数,使析构函数"受保护"似乎不起作用.它至少需要保护子类(我认为).
有人有主意吗?
c++ ×2