问题标签 [raw-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 回答
211 浏览

rust - 为什么 `*mut T` 实现了 `Unwindsafe` 而 `&mut T` 没有?

在我们的文档Unwindsafe

&mutT 和等类型是不安全&RefCell<T>的示例。一般的想法是,任何可以共享的可变状态在默认情况下都不是安全的。这是因为很容易在外部看到损坏的不变量,因为数据只是照常访问。catch_unwindcatch_unwind

按照这个逻辑,在我看来*mut T不应该Unwindsafe。但事实证明它是。这是为什么?

0 投票
1 回答
103 浏览

pointers - crossbeam_epoch::Shared::as_raw “将指针转换为原始指针(不带标签)”是什么意思?

有人可以将翻译成对我有意义的东西:

将指针转换为原始指针(不带标记)。

  1. 指针和原始指针有什么区别?

    Stack Overflow原始指针标签既没有说“智能”也没有说“共享”,这又是一个谜。

  2. Crossbeam 的Shared::as_raw“标签”到底是什么?

0 投票
1 回答
92 浏览

c++ - c ++使用原始指针创建循环依赖对象

我正在尝试创建一个连通图并对其执行某些计算。为此,我需要从该图中的每个节点访问其邻居,并从其邻居访问其邻居的邻居,依此类推。这不可避免地会产生许多(有用的)循环依赖。

下面是一个带有 3 个相互连接的节点(如三角形的 3 个顶点)的简化示例,我不确定这种方法是否是一个好方法,特别是如果清理留下任何内存泄漏:

我也知道我可以使用shared_ptr+weak_ptr来完成任务,但是智能指针会带来开销,我希望尽可能避免这种情况(我也讨厌一直使用 .lock() 来访问数据,但这并不重要)。我使用智能指针重写了代码,如下所示,我想知道两段代码之间有什么区别(两段代码的输出相同)。

0 投票
2 回答
82 浏览

c++ - 描述原始指针(指向对象)的概念的正确实现是什么?

这可能只是学术兴趣。

因为我注意到我的实际例子可能不适合提出这个问题。

最初我写了类似的东西

备份地址。auto现在我想知道我是否可以通过用更有意义、视野更开阔的 C++20 概念来代替这个愚蠢的概念来做得更好。

经过一番思考,该特定示例中的正确选择可能只是

因为这反映了备份的意图,即某物的副本。

但是剩下的学术问题是:正确映射原始指针概念的行为的正确(概念标准库)实现是什么?如有必要,让我们将“指针”限制为指向对象的指针。还有指向 void、函数、成员的指针——可能会使问题复杂化。

我想到了与迭代器的关系。希望不会再次正确回答我自己的问题:std::contiguous_iterator在某些情况下会是一个有价值的选择吗?有人可以就该主题分享或多或少完整的专家观点吗?

为什么还没有针对该概念的 std::pointer_to_object 标准库实现(当着你的面大喊大叫)?

0 投票
1 回答
181 浏览

rust - 如何打印原始指针的大小?

当我在操场上尝试这个时它失败了:

有没有办法打印原始指针的大小*const u32

0 投票
1 回答
35 浏览

c++ - 在构造函数中移动/交换中间向量后,我应该如何管理它?

我正在学习内存管理,但不太确定如何管理删除和/或析构函数策略。

假设我有以下模板:

我应该如何设置析构函数策略db?我知道对于原始指针,std::move仅将向量的中间向量复制到db; 因此,我仍然需要删除中介动态分配的向量。我可能是错的,但我相信对于std::swap.

但是,在程序结束时,我应该如何管理析构函数策略db?我只是将其设置为默认值吗?

0 投票
0 回答
100 浏览

c++ - 不确定智能指针 C++

我是 C++ 新手,我想问一下下面的代码。假设我们有 A 类,然后是 A 的子类 B。然后我们有其他 C 类,我希望这个类能够拥有 A 对象或 B 对象。我为此使用了模板。我不确定这是否是好方法。另外我的另一个问题是我读到使用拥有原始指针是一种不好的做法,那么我该如何在这里使用智能指针呢?欢迎任何建议或意见。

0 投票
0 回答
36 浏览

c++ - C ++将原始指针包装在容器双端队列中的类中不起作用?

显示问题的示例源代码:

执行上述代码的结果:

为什么值与预期不符,它们已在 InsertElement 函数中进行了修改,并且 dq 是通过引用传递的。我无法弄清楚上面的代码有什么问题? 很明显,不属于数组的 ele1 获得了在 InsertElement 函数内部分配的值,而不是数组。即使我们为它分配了 0 到 9 的值,数组似乎也未初始化。为什么会出现这种奇怪的行为?请帮我解释一下,我真的很困惑。

代码的另一个问题:由于 delete[] 而调用 Element 类的析构函数时,它会在程序结束时抛出异常。我以前修复过,但现在的代码正在导致异常。不知道为什么。

0 投票
0 回答
9 浏览

smart-pointers - 将原始指针中的内存分配给 shared_ptr 而不创建临时 shared_ptr

在以下代码中,方法 receivePointer 接收一个内存地址并使共享指针 ptr 指向该内存:

有没有办法更改 receivePointer 中的代码,使其不会创建临时共享指针?这样子看起来好难看。

0 投票
1 回答
80 浏览

c++ - 关于在另一个类中保留对 unique_ptr 的引用的问题

最近,我决定是时候深入研究智能指针了。我读到了不同的类型(独特的、共享的、弱的),但我不确定一件事。

假设我有一个班级Player和一个GameMap班级。这些类的内容与下一部分无关。我还有一个Engine类,它表示将包含我的游戏主要组件的对象,如下所示:

这些是将创建的玩家和游戏地图的唯一实例,并且Engine拥有它们,并且应该负责它们的分配和删除。因此,aunique_ptr似乎是这里的不错选择。

现在,我想m_player在我的GameMap类中保留一个简单的引用,因为它比将 传递m_player给需要它的每个函数对我来说更容易。

我的问题是:在类中使用原始指针(通过get()方法获得)是保持对类中原始指针GameMap的引用的最佳方式吗?unique_ptrEngine我认为我不能使用另一个unique_ptr指向原始的,因为对于unique_ptr.