1160得票21回答
一个本地变量的内存是否可以在其作用域外被访问?

我有以下的代码。#include <iostream> int * foo() { int a = 5; return &a; } int main() { int* p = foo(); std::cout << *p; ...

264得票7回答
弱引用和无主引用有什么区别?

Swift拥有以下内容: 强引用 弱引用 无主引用 无主引用和弱引用有何不同? 在什么情况下使用无主引用是安全的? 无主引用是否像C/C++中的悬垂指针一样存在安全风险?

73得票8回答
什么是悬空指针?

我知道这是一个相当常见的问题,但对于我来说仍然很新奇! 我不理解悬空指针的概念,一直在Google上搜索,并编写测试方法来寻找。 我只是想知道这是否是一个悬空指针?因为我找到的所有例子都返回了某个值,而我正在尝试类似的操作! 谢谢!void foo(const std::string n...

72得票3回答
比较悬挂指针是否合法?

比较悬空指针是否合法?int *p, *q; { int a; p = &a; } { int b; q = &b; } std::cout << (p == q) << '\n'; 请注意,p和q都指向已经消失的对象。这...

31得票6回答
使用numpy/ctypes暴露C分配的内存缓冲区的更安全方法?

我正在为一个使用共享内存缓冲区存储其内部状态的C库编写Python绑定。这些缓冲区的分配和释放是由库本身在Python之外完成的,但是我可以通过从Python中调用包装的构造函数/析构函数来间接控制这个过程。我想将其中一些缓冲区暴露给Python,以便我可以从中读取,并在某些情况下向其中推送值...

21得票3回答
检测临时变量的悬空引用

Clang 3.9极大地重用了临时内存。 以下代码是未定义行为(简化代码): template <class T> class my_optional { public: bool has{ false }; T value; const T&...

20得票1回答
为什么在三元表达式中使用std::string_view会创建一个悬空视图?

考虑一种方法,该方法从返回const std::string&方法或空字符串中返回std::string_view。令人惊讶的是,以这种方式编写方法将导致悬空字符串视图:const std::string& otherMethod(); std::string_view my...

17得票6回答
为什么没有unique_ptr::operator*()的安全替代方案?

std::vector有成员函数at()作为operator[]的安全替代品,这样可以应用边界检查并且不会创建悬空引用: void foo(std::vector<int> const&x) { const auto&a=x[0]; // What i...

15得票4回答
有没有办法检查指针是否悬空?

我有一段代码,我在其中使用了一个指针来访问一些数据块。在某些罕见情况下,数据块的某些成员为空,导致指针变得悬空。实际上,我得到了正确的指针,但程序在尝试使用该指针时崩溃。 通常的建议是避免使用这种类型的访问方式。但不幸的是,我使用的框架要求我使用这种数据访问方法。 有没有一种方法可以在对指...

15得票1回答
这个构造函数初始化器会导致悬空引用吗?

我正在学习Stanley B. Lippman的C++ Primer第4版。在第12.4.1节中,作者讲到了构造函数初始化器,并且给出了以下示例:class ConstRef { public: ConstRef(int ii); private: int i; ...