<分区>
问题差不多就是这样。在 C++ 中,如果指针不是 NULL
,是否有任何方法可以确定指向的数据是分配在堆上(new
类型分配)还是堆栈(典型分配和当前作用域生命周期)。
我有一个智能指针和数组的实现(我知道 C++11 中存在智能指针,但我避免使用它们,直到有比当前更干净的添加智能数组的方法),我在其中跟踪引用计数等.每当一个指针不再被引用时,它就会被删除。问题是,当前的实现并没有阻止给类一个指向堆栈上变量的指针(我不想通过智能指针强制创建指针,我有特定的情况我想做自己分配,例如在一个函数中创建一个数组时,在同一个函数中它需要在传递给调用者之前调整大小等等),但是如果我给出这样的指针,类将尝试调用 delete
或此指针上的 delete[]
,这将导致未定义的行为(老实说,在大多数情况下会导致崩溃)。
那么有没有一种方法可以检查我是否应该在销毁时删除这个指针,或者类是否应该首先接受它?
提前谢谢大家。