14得票3回答
内部 lambda 中的悬空引用

我有一个内部Lambda,它使用了外部Lambda的一个引用变量,像这样:int x=0; auto outer=[&](){ return [&](){ x=5; }; }; auto inner= outer(); inner(); std:...

13得票2回答
这个异步技巧是否有效,或者当我访问它时状态会挂起?

我面临这样一种情况,即希望完全异步地启动std::async操作。future<void> MyClass::MyAsyncFunc() { std::future<void> f = std::async(...); return f; } // T...

11得票3回答
检查悬空指针的值是安全的还是未定义行为?

我们只能取消引用一个有效的指针,只能检查悬空内置指针指向的地址。我们无法访问其值(指向的对象的地址中的值)。int* ptr = nullptr; if(ptr) // != 0x00000000 std::cout << *ptr << '\n'; ptr =...

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

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

10得票1回答
将局部协程变量的指针co_yield出去是否安全?

众所周知,返回指向堆栈变量的指针通常是不明智的:int* foo() { int i = 0; return &i; } int main() { int* p = foo(); } 以上示例中,我的理解是int被销毁了,因此p成为了悬空指针。 我想知道这是否也适用于C+...

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

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

10得票3回答
GCC编译C/C++的最严格选项集是什么?

哪些GCC选项能够提供最好的保护,以防止内存损坏漏洞,如缓冲区溢出和悬空指针?GCC是否提供任何类型的ROP链缓解措施?是否存在性能问题或其他问题,会阻止该GCC选项在生产中用于关键任务应用程序? 我正在查看Debian强化指南以及GCC Mudflap。以下是我考虑的配置:-D_FORTI...

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

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

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

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

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

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