问题标签 [dangling-pointer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1129 浏览

c - realloc() 悬空指针和未定义行为

当您释放内存时,指向该内存的指针会发生什么?它们会立即失效吗?如果它们后来再次生效会怎样?

当然,指针变为无效然后再次变为“有效”的通常情况是其他对象被分配到恰好是之前使用的内存中,如果您使用指针访问内存,那显然是未定义的行为。悬空指针内存几乎覆盖了第 1 课。

但是,如果内存对于相同的分配再次变得有效怎么办?只有一种标准方式可以做到这一点:realloc(). 如果您有一个指向malloc()offset 处的 'd 内存块中某处的指针> 1,然后使用realloc()将块缩小到小于您的偏移量,那么您的指针显然会变得无效。如果您再次使用realloc()将块重新增长到至少覆盖悬空指针指向的对象类型,并且在两种情况下都没有realloc()移动内存块,那么悬空指针是否再次有效?

这是一个极端情况,我真的不知道如何解释 C 或 C++ 标准来弄清楚。下面是一个显示它的程序。

0 投票
0 回答
24 浏览

c++ - 在调用隐式复制构造函数时理解悬空指针

我正在尝试演示悬空指针的概念,并在其上编写程序。

假设如果您将指针作为类变量并且您没有编写自己的复制构造函数,那么它可能会导致悬空指针的概念。

隐式复制构造函数对元素进行成员明智的复制(浅复制)。因此,如果一个对象超出范围,则会导致悬空指针问题。

那么我为演示悬空指针而编写的这个程序是否正确?当我在 ideone.com 上编译它时,它给出了运行时错误。

0 投票
2 回答
156 浏览

c - C释放检查不起作用

我写了一个方法来释放我的结构。现在我有一个问题。当我两次调用此方法时,它给了我一个错误。但是我确实检查了我的结构中是否有某些东西,所以我不知道它怎么可能给我错误。

我的结构:

我的免费方法:

额外方法:

给我一个错误的方法:

0 投票
1 回答
97 浏览

c++ - 临时对象的成员函数的左值引用返回是悬空引用吗?

有一堂课CBase

如果我声明一个左值引用和一个指针,

kk悬空引用还是pp悬空指针?

我认为kk并且pp悬而未决。因为调用CBase()无疑会创建一个临时对象,所以导数 ,CBase().Create()也应该是。但是,Xcode(6.1 版)没有给出警告或错误消息。

谁能给出一些提示或告诉我 C++11 文档在哪里描述了这些行为?还是我错了?

0 投票
5 回答
191 浏览

c++ - 内存分配栈

在堆栈中,我们为函数main调用堆栈帧保留了内存。main

当我们调用Add函数时,内存保留在栈顶。在Add函数堆栈帧中,ab是本地指针,c是一个整数,它计算总和然后我们返回引用。cAdd函数的局部变量。

现在,当Add函数执行完成时,堆栈中的内存空间也被释放,所以当我们尝试在mainwith 指针中访问这个地址时p,我们试图访问的基本上是一个释放的空间。编译器发出警告,但为什么它仍然正确打印值 5?

答案可能是机器没有释放内存空间,因为它认为没有必要,因为没有更多的功能。但是如果我们编写另一个函数Hello,那么它肯定应该Add在调用堆栈中为函数释放空间,但程序仍然打印

是因为像在堆中一样,我们需要null在释放它之后分配一个指针,否则我们仍然可以访问它?这里有类似的东西吗?

0 投票
3 回答
1239 浏览

c++11 - 悬空指针和内存泄漏有什么区别?

我是 C++ 新手,想问一下下面的代码是否是悬空指针或内存泄漏的示例,因为它指向动态分配的数组之外:

0 投票
1 回答
128 浏览

c - 这怎么是一个悬空指针?

当我在此链接上找到代码时,我正在网上阅读有关悬空指针的信息:

http://www.billioncodes.com/c/ques-and-ans/747-what-is-dangling-pointer-give-an-example-on-pointers-to-pointer-and-passing-by-address

我把它贴在这里:

这是一个悬空指针,哪个指针悬空?该代码对我来说似乎有效。它应该打印“i = 21”并返回。我没有看到任何悬空指针。

0 投票
2 回答
76 浏览

c++ - 为什么悬空指针给出了先前指向的变量的大小?

输出:

为什么*pB即使在取消分配之后,大小也是 8?

0 投票
2 回答
206 浏览

c - SQLite SQLITE_STATIC 局部变量问题

我正在查看一些供应商代码,并且有这样的查询:

后来在查询被执行的道路上。问题是这个查询永远不会匹配,即使它应该匹配。

我认为问题在于sqlite3_bind_text绑定了一个局部变量,而 SQLite 保留了指向原始局部变量的指针。因此,当它超出范围时,它可能已经被覆盖。修复似乎是SQLITE_TRANSIENT改用。谁能证实我的想法?还是我不在基地?

另一个奇怪的问题是供应商永远无法复制它。运气?

0 投票
3 回答
2619 浏览

c++ - 比较悬空指针是否合法?

比较悬空指针是否合法?

请注意两者如何pq指向已经消失的对象。这合法吗?