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

c++ - 将布尔向量的向量转换为指针的指针

我有一个类似于Convert vector of vector to pointer of pointer问题中提到的问题。

唯一的区别是我必须使用布尔值而不是短裤。

但是如果我编译这段代码:

我收到以下错误:

./dummy/main.cpp:15:错误:从不兼容的类型'void'分配给'__gnu_cxx::__alloc_traits<std::allocator<bool *> >::value_type'(又名'bool *')

./dummy/main.cpp:15: 错误: 无效值没有被忽略,因为它应该是 vpsPtr[c++] = vsVec.data();

拜托,有人可以解释我做错了什么以及如何解决这个问题吗?

谢谢。

0 投票
0 回答
42 浏览

c++ - 将原始指针列表存储在向量中的替代方法

在我的系统中,我需要将一个类的成员发送到一个外部对象进行处理(我们称之为 a processor)。成员被processor暂时保留,并将根据某些条件从处理器中删除。nullptr如以下示例所示,成员设备和处理器由 DeviceContainer 拥有,因此从我可以看出访问处理器内部不应该有问题。但是存储原始指针列表似乎通常是一个坏主意,所以我想问一下在DeviceProcessor下面列出的结构中存储指针数组可能是更好的选择。

0 投票
1 回答
66 浏览

c++ - 将 unique_ptr()::get() 返回的原始指针传递给以双指针作为函数参数的函数

代码编辑:https ://gcc.godbolt.org/z/x3hnj46WY

场景 -1 试图通过引用(或指针)传递原始指针无法使用 & 将 get() 的值传递给 setBuffer() // 编译错误:lvalue required as unary '&' 操作数

场景 -2 通过获取原始字符指针分配值返回 使用 & 将字符指针传递给 setBuffer()

注意:setBuffer() 存在于 C 库中我正在使用此 API https://www.libssh2.org/libssh2_session_last_error.html来获取 errmsg,而不是使用 char 数组缓冲区,我想使用 char 数组的智能指针。

0 投票
2 回答
73 浏览

c++ - c++ 多态性和原始指针的使用

我正在编写一个数据包处理器并具有以下类:

这似乎工作正常,实际上是我认为多态性的用途。但我的问题是:我应该担心这里使用的原始指针吗?是否有更推荐的方法通过智能指针来做到这一点?

例如,在这一行中:

从技术上讲, pkt 在if语句之后超出了范围,因此通常它的生命周期会结束。但是因为 curr_pkt 指向它,所以它继续存在。这是一个潜在的问题,不是吗?

0 投票
2 回答
77 浏览

c++ - 多态性:原始指针与智能指针

如何使这项工作?

我想使用多种类型的向量(研究、添加、删除)进行库存管理(药水、武器等。所有这些都派生自虚拟类 Item)。

我在这里简化了问题:我有一个包含项目(基类)和武器(派生类)的向量。对于内存管理问题,我更喜欢使用 unique_ptr 但没有办法返回或正确使用它。

下面的例子:

所以我有几个问题:

  • 即使看起来不是问题,多态性是否与智能指针兼容?
  • 返回原始指针是唯一的解决方案吗?
  • 我是否必须使用 shared_pointer 在向量和程序的另一部分中使用它?
  • 有没有办法返回参考?

谢谢。塞巴斯蒂安

0 投票
1 回答
81 浏览

c++ - 使用接口模板向下转换实现

我正在实现一个通用接口,可以桥接某些基类的不同实现。

接口实用程序编写如下:

如果有什么用,我也会写 *.cpp 的内容:

classes 的目的IBaseObject是能够扩展到不同的实现UnknownObject,例如:ObjectInterface<>IBaseObject

使用如下:

问题是:根据我以前的经验,方法UnknownObject::DeletePointer应该删除 rawm_pObject以避免内存泄漏,但是这样做时会引发异常,因为派生实例的内存块即将被释放。m_pObject不删除指针是否安全?UnknownObject销毁后还是会被删除吗?

inb4:我已经尝试过使用std::unique_ptrstd::shared_ptr导致无法从派生实现(例如TestClassSquareImpl::ProcessValueor ITestClass::GetValue)访问方法。

编辑:抛出的异常free是:Invalid address specified to RtlValidateHeap( 0000016F756B0000, 00000004B0AFF988 )。我在 gtest 中运行示例时第一次遇到它,但是当程序超出范围时会发生同样的事情,从而导致DeletePointer调用。

0 投票
1 回答
121 浏览

rust - 为什么不安全的代码不能从原始指针后面移出非复制类型?

Rust 语言不允许不安全的代码从原始指针后面移出非复制类型,报告以下程序的编译错误:

编译错误:

该错误消息的动机是什么?是因为从原始指针后面移出非复制类型很容易出错,即使开发人员声明他足够专家编写不安全的代码?或者上面的程序中是否有一些我遗漏的未定义行为?

0 投票
0 回答
59 浏览

rust - 为什么取消引用从函数返回的未处理的原始指针会导致未定义的行为?

我发现取消引用一个未绑定的原始指针会导致未定义的行为,但我不知道为什么。我发现这Pin解决了我的情况。为什么它不起作用?

操场

0 投票
1 回答
84 浏览

rust - 当涉及原始指针时,Rust 如何推断生命周期?

调用时cell.set(&local),假设cellis'x'&localis 'y,我被告知协方差规则将改变cellfrom &MyCell<'x, &i32>to的类型&MyCell<'y, &i32>

unsafe 块内的赋值如何影响参数的生命周期推断set()?原始指针没有生命周期,那么编译器如何知道它应该使用协方差生成cellnew_value具有相同的生命周期?