9得票5回答
删除指针和将其设置为nullptr有什么区别?

说"delete pointer"和"pointer = nullptr"是一样的吗?可能不是,但后者是否释放了内存?那么delete pointer; pointer = nullptr / pointer = nullptr; delete pointer呢?为什么不使用它们来安全地预先删...

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

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

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

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

9得票1回答
在C++中的常量求值过程中,悬空指针是否可能等于有效指针?

在C++17中进行常量表达式求值时,编译器是否应该将任何指向有效对象的指针视为不等于任何指向其生命周期结束后的对象的指针? 例如: constexpr auto f(int * x = nullptr) { int c = 0; auto p = &c; i...

9得票2回答
简单高效的弱指针,当目标内存被释放时设为NULL

有没有一个简单、高效的弱/守护指针? 我需要多个指向同一对象的指针,当对象被删除时,所有指针都会自动设置为NULL。有一个“主”指针始终用于删除对象,但可以有多个指向同一对象的其他指针。 以下是一些不完全符合我的需求的解决方案: QPointer:我不是在开发QT应用程序;我不希望包含这...

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

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

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

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

11得票4回答
编写释放指针并将其赋值为NULL的函数

最近面试时问到我这个问题,基本上是写一个函数来结合释放和赋值为null的功能。我的回答如下:void main() { int *ptr; ptr = new int; ptr = newdelete(ptr); } (int*) newdelete (i...

10得票1回答
指向多态类的悬空指针会导致未定义行为。是否真的可能成为任何想象得到的损坏的源头?

我知道一旦发生未定义行为,就不可能再考虑代码了。我完全相信这一点。我甚至认为我不应该过于深入理解未定义行为:一个健全的 C++ 程序不应该涉及未定义行为,就这样。 但是为了让我的同事和经理们确信它的真正危险性,我试图找到一个具体的例子,使用我们产品中存在的错误(他们认为这不是危险的,最多只会...

9得票1回答
C++返回一个std::string &

std::string &func(int vlu) { std::string str; str = std::to_string(vlu) + "something"; return str; } 上面的函数显然是不安全的。 以下是另一个版本。 st...