我们可以确定指向的数据是否是手动分配的?

时间:2014-07-29 13:55:03

标签: c++ pointers c++11

问题就在于此。在C ++中,如果指针不是NULL,则有任何方法可以确定指向的数据是在堆(new - 类型分配)上还是在堆栈上分配(典型分配和当前范围生存期)

我有一个智能指针和数组的实现(我知道C ++ 11中存在智能指针,但我避免使用它们,直到有一种更清晰的方式来添加智能数组),其中我跟踪引用计数等等。每当指针完全没有被引用时,它就会被删除。问题是,当前的实现并没有阻止向类提供指向堆栈变量的指针(我不想强制通过智能指针创建指针,我有具体情况我想做的事情自己分配,例如在函数中创建数组时,在同一个函数中需要调整大小才能传递给调用者等等,但如果我给出这样的指针,该类将尝试调用{{1这个指针上有一个delete,这将导致未定义的行为(说实话,大多数情况下都是崩溃)。

那么我是否有办法检查是否应该在销毁时删除此指针,或者该类是否应该首先接受它?

先谢谢大家。

1 个答案:

答案 0 :(得分:1)

没有

您可能希望的最好的是基于某些特定库的实现细节的非便携式黑客攻击,即使这样也会产生非零的误报结果。