问题标签 [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 投票
1 回答
192 浏览

c++ - 从函数返回 ref 到数据会导致悬空 ref 问题

请检查下面的两个代码片段。虽然在示例 2 中,显然存在悬空引用问题,因为传递了局部变量的 ref,您认为示例 1 中是否存在相同的问题?我自己认为样本 1 是正确的。当数据被推送到数据结构( )中时,引用被获取( isstl::queue的函数头)。所以通过这里返回数据应该没有问题。或者有吗?enqueuevoid enqueue(const int &data)&data

样品 1:

样本 2:

0 投票
21 回答
288328 浏览

c++ - Can a local variable's memory be accessed outside its scope?

I have the following code.

And the code is just running with no runtime exceptions!

The output was 58

How can it be? Isn't the memory of a local variable inaccessible outside its function?

0 投票
1 回答
269 浏览

c++ - N3290 C++ 草案中的临时生命周期

N3290 C++ 草案中的一点,第 12.2 节,第 5 点,第 10 行。

第二个上下文是引用绑定到临时的。引用绑定到的临时对象或作为引用绑定到的子对象的完整对象的临时对象在引用的生命周期内持续存在,但以下情况除外:

临时绑定到 new-initializer (5.3.4) 中的引用将持续到包含 new-initializer 的完整表达式完成为止。[ 例子:

—结束示例] [注意:这可能会引入悬空引用,鼓励实现在这种情况下发出警告。——尾注]

这是与 C++03 相比的附加点。但是这个例子对我来说是无法理解的。你能用任何其他例子解释这一点吗?

我知道什么是悬空引用和临时对象,它们std::pair包含两个可能不同数据类型的值。

0 投票
2 回答
369 浏览

c - 在这种情况下 char[] 和 char* 有何不同?

当我们运行这段代码时,它可以正常工作并string constant在屏幕上打印:

但是当我们运行以下类似的代码时,它不会工作并在屏幕上打印一些垃圾:

背后的原因是什么?本质上,这两个函数都做类似的事情(即返回一个“字符串”),但它们的行为仍然不同。这是为什么?

0 投票
4 回答
9430 浏览

c++ - 有没有办法检查指针是否悬空?

我有一个代码,我使用指针访问一些数据块。在极少数情况下,数据块的一些成员是空的,因此指针变得悬空。事实上,我得到了正确的指针,但是当试图用指针做某事时程序崩溃了。

通常的建议是避免这种类型的使用。但遗憾的是,我使用的框架要求我使用这种类型的数据访问方法。

有没有办法在对指针进行任何操作之前“检查”指针是否无效?显然,检查指针是否不等于 NULL 不起作用。我也试过这个:

这是正确的方法吗?

0 投票
6 回答
2352 浏览

c++ - 如何检测或防止野指针

这个非常简单的代码演示了复杂环境中野指针导致的那种麻烦。

有什么方法可以检测或预防问题?智能指针在这里有帮助吗?

0 投票
7 回答
1081 浏览

c# - 在 C# 中不是在 C++ 中安全,指针/引用的简单返回

C++ 代码:

C#代码:

如果我理解这一点,C++ 中的示例是不正确的,因为p将超出范围,函数将返回一个野指针(悬空指针)。

C# 中的示例是可以的,因为只要有对它的引用,匿名新人就会留在范围内。(调用函数得到一个。)

我做对了吗?

0 投票
1 回答
2215 浏览

c++ - 在回调函数中删除对象

我正在发送 HTTP 请求以在服务器上保存/更新数据。请求是异步发出的,并在完成时调用回调函数。一切正常,只是有时应用程序在回调中崩溃。

这就是我正在做的事情:

User中,我有一个saveOnServer()方法:

回调:

有时,我需要在向服务器发送请求后创建一个新用户:

问题是在这种情况下,应用程序在回调中删除用户时崩溃,因为它已经被删除了。另一个问题是回调删除了用户,但user指针main仍然指向某个地址(悬空指针),所以我再次尝试删除它。

我不确定在这种情况下管理内存的最佳方法是什么。我已经zombie到位,因为在某些情况下我不希望回调删除用户。

0 投票
1 回答
1105 浏览

c++ - 此构造函数初始化程序是否会导致悬空引用?

我正在学习 Stanley B. Lippman 的 C++ Primer 第 4 版。在 12.4.1 节中,当作者谈到构造函数初始化器时,他给出了这个例子:

我怀疑这可能会导致ri指向的悬空引用ii,这是一个临时的。我对吗?

0 投票
8 回答
1008 浏览

c++ - 为什么将 0 分配给指针是悬空指针的解决方案?

当指针被赋值为 0 时操作系统/调试器会做什么?