小编Ver*_*era的帖子

C++悬空指针和内存泄漏

我很难理解如何分辨悬空指针和内存泄漏.关于最近的任务令我感到困惑,我有几个问题,在阅读之后,我仍然感到困惑.我不希望有人为我做我的作业,我希望能够理解为什么它是什么,如果这是有道理的.

所以,作业:


鉴于声明:

int *ptrA, *ptrB;
Run Code Online (Sandbox Code Playgroud)

判断下面的每个代码段是否导致内存泄漏,悬空指针或两者都没有.画画帮忙.

  1. 我猜这很好,因为ptrA已经指向内存中的东西,所以这个既不是悬空指针也不是内存泄漏.
ptrA = new int;
ptrB = new int;
*ptrA = 345;
ptrB = ptrA;
Run Code Online (Sandbox Code Playgroud)
  1. 我猜这是一个悬空指针,因为345从内存中释放出来,所以ptrB没有任何结果.
ptrA = new int;
*ptrA = 345;
ptrB = ptrA;
delete ptrA;
Run Code Online (Sandbox Code Playgroud)
  1. 这是我完全迷失的地方.最后一行是否意味着指针指向另一个指针?不确定这会产生什么影响.
ptrA = new int;
ptrB = new int;
*ptrA = 345;
*ptrB = *ptrA;
Run Code Online (Sandbox Code Playgroud)
  1. 像前一个问题一样,我不确定指向指针的含义,或者我是否理解这是实现了什么.
ptrA = new int;
ptrB = new int;
*ptrA = 345;
ptrB = new int;
*ptrB = *ptrA;
Run Code Online (Sandbox Code Playgroud)
  1. 我知道这是一个悬垂的指针,但我不知道为什么.是因为指针指向一个在函数完成时超出范围的局部变量?
ptrA = LocationOfAge();
Run Code Online (Sandbox Code Playgroud)

其中函数LocationOfAge定义为: …

c++ pointers memory-leaks

4
推荐指数
1
解决办法
353
查看次数

标签 统计

c++ ×1

memory-leaks ×1

pointers ×1