std::move 是让堆栈碎片化,还是在将对象移动到调用方后重新排列堆栈?
作者:muaz 提问时间:6/29/2022
我已经阅读了几个答案和许多关于移动语义的文章,所以它只是一个静态转换到右值引用,这个问题是关于它对堆栈的影响,那么堆栈在移动后是否留下了碎片?还是以某种方式重新排列?由于堆栈移动的对象不受堆栈展开的影...
堆栈展开 问答列表
作者:muaz 提问时间:6/29/2022
我已经阅读了几个答案和许多关于移动语义的文章,所以它只是一个静态转换到右值引用,这个问题是关于它对堆栈的影响,那么堆栈在移动后是否留下了碎片?还是以某种方式重新排列?由于堆栈移动的对象不受堆栈展开的影...
作者:bigmuscle 提问时间:6/5/2023
我在ARM上开发C++应用程序(树莓派,g++(树莓派8.3.0-6+rpi1)8.3.0 ).当我尝试调试代码或应用程序在代码中崩溃时,我会得到正确的调用堆栈,没有任何问题。但是,当应用程序在外部库...
作者:grizzlybears 提问时间:6/7/2022
据我了解,我们不能从 dtor 抛出异常, 原因是这样说的: “如果在'堆栈展开'中抛出异常,则没有明确的方法来处理'嵌套展开',因此禁止'从 DTOR 抛出'。” 让我感到困惑的是,为了遵守上述规...
作者:einpoklum 提问时间:11/29/2022
已关闭。这个问题是基于意见的。它目前不接受答案。 想改进这个问题吗?更新问题,以便可以通过编辑这篇文章来用事实和引文来回答。 12个月前关闭。 改进此问题 我有一个类,其 ctor 进行驱动程...
作者:Fee 提问时间:5/8/2023
该部分似乎包含堆栈展开信息,并由矮人标准定义。.debug_frame 该部分似乎基本上包含相同的信息,但有一些细微的差异,并且由 linux 基金会定义.eh_frame 为什么同一件事有两个非...
作者:alex35833 提问时间:7/16/2023
这是一个非常简单的 c++ 文件 class C { public: C(){} ~C(){} }; void g() { throw std::exception(); } void f...
作者:Dmitry Kuzminov 提问时间:11/11/2022
我试图理解 C++ 中堆栈展开背后的机制。换句话说,我对这个功能是如何实现的(以及这是否是标准的一部分)感兴趣。 因此,线程会执行一些代码,直到引发异常。当抛出异常时,用于记录状态和展开堆栈的线程/...
作者:Mazen Ak 提问时间:11/4/2021
假设我们有以下代码: #include <exception> void funcA() { funcB(); } void funcB() { funcC(); } void func...
作者:Marcell Juhász 提问时间:10/26/2022
我目前正在尝试嵌入式 C++ 编程,我正在尝试理解 ST 提供的 C HAL,在现代 C++ 中对其进行返工,优化一些东西等。 我到了可以闪烁 LED 的地步。我当前二进制文件的大小是 1800 字...
作者:Joseph Garvin 提问时间:4/30/2023
我想检查 GCC 是否确保在抛出异常时为运行析构函数生成的额外代码放在二进制文件的冷部分,以使这些指令远离“快乐路径”并避免导致指令缓存压力。所以我在下面做了一个例子(Godbolt 链接),其中 G...