dangling-pointer

    8热度

    2回答

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

    1热度

    2回答

    当我们运行这段代码,它工作正常,并打印string constant在屏幕上: char *someFun(){ char *temp = "string constant"; return temp; } int main(){ puts(someFun()); } 但是,当我们运行下面类似的代码,它不会工作,并在屏幕上打印一些垃圾: char *some

    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

    8热度

    4回答

    我有一个代码,我使用指针访问某些数据块。在一些罕见的情况下,数据块的一些成员是空的,结果指​​针变得悬空。实际上,我得到了正确的指针,但是当试图用指针做某事时,程序崩溃了。 通常的建议是避免使用这种类型。但令人遗憾的是,我使用的框架要求我使用这种类型的数据访问方法。 有没有一种方法可以在对其进行任何操作之前“检查”指针是否无效?显然,检查指针是否不等于NULL不起作用。我也试过这个: try {

    5热度

    7回答

    在将值分配给t之前,是否必须在以下代码中初始化t?代码是否正确? void swap(int *x, int *y) { int *t; *t = *x; *x = *y; *y = *t; }

    3热度

    5回答

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

    -3热度

    6回答

    这个非常简单的代码演示了野指针在复杂环境中导致的麻烦类型。 int main() { int *a1 = new int; int *tmp = a1; delete a1; // Now, the tmp pointer is a wild pointer, it's dangerous. int *a2 = new int; de