【发布时间】:2011-09-15 16:14:36
【问题描述】:
我可以检查一个对象(通过指针或引用传递)是否是动态分配的?
例子:
T t;
T* pt = new T();
is_tmp(&t); // false
is_tmp(pt); // true
上下文
我完全意识到这听起来像是糟糕的设计,事实上确实如此,但我正在尝试扩展我不能(或不应该不)修改的代码(当然我责怪代码不是我的;))。它调用一个方法(我可以覆盖),该方法将delete 传递的对象以及仅适用于动态分配的对象的其他内容。现在,我想检查一下我是否有可以成为deleted 的东西,或者它是否是临时的。
我永远不会传递一个全局(或静态)变量,所以我将这个未定义,留在这里。
【问题讨论】:
-
请注意,另一个(尽管较旧)问题已作为此问题的副本关闭,因此将其作为另一个问题的副本关闭可能不是一个好主意(循环参考)。跨度>
标签: c++ memory-management