dangling-pointer

    8热度

    2回答

    是否存在简单,高效的弱/保护指针?我需要指向同一个对象的多个指针,当对象被删除时它们全部自动设置为NULL。有一个总是用来删除对象的“主”指针,但可以有几个指向同一对象的其他指针。 这里有一些解决方案,不完全匹配我的需求: QPointer:我不是开发一个应用程序QT;我不希望包含这个库文件/派生自QObject。 boost::weak_ptr: 访问解除​​分配的对象时引发异常。我的情况太昂贵

    11热度

    4回答

    我在最近的一次采访中被问到了这个问题,基本上写了一个函数来结合free和assign null的功能。我回答以下方式: void main() { int *ptr; ptr = new int; ptr = newdelete(ptr); } (int*) newdelete (int *ptr) { delete(ptr);

    2热度

    4回答

    在以下代码段中,free(x)之后,为什么y变为0? 根据我的理解,x指向的堆中的内存,仍然被指向y,尚未分配给其他人,那么它如何变为0? 而且,我不认为这是free(x)它变为0 有何评论? #include <stdio.h> int main(int argc, char *argv[]) { int *y = NULL; int *x = NULL;

    3热度

    5回答

    在经历了一些痛苦的经历后,我明白了悬摆指针和双重自由的问题。我正在寻求适当的解决方案 aStruct具有许多领域,其中包括其他阵列。 aStruct *A = NULL, *B = NULL; A = (aStruct*) calloc(1, sizeof(sStruct)); B = A; free_aStruct(A); ... // Bunch of other code in v

    3热度

    5回答

    说我有两个容器存储指向相同的对象: std::list<Foo*> fooList; std::vector<Foo*> fooVec; 比方说,我通过一个,如果它的方法去除从这些容器中的一个对象: std::vector<Foo*>::iterator itr = std::find(fooVec.begin(), fooVec.end(), pToObj); fooVec.e