c++ - 大括号中发生了什么

标签 c++ c++11 visual-studio-2013 curly-braces

据我所知, 实际上包含一些操作,例如销毁堆栈分配的对象,因为当对象的析构函数中发生错误时,VS.NET 会指向 Curly 的关闭大括号,甚至您可以使用 F11 进入它并查看已调用的析构函数中发生了什么。但是,我注意到 { 也是一个操作,如果我尝试使用 F11 进入它,VS.NET 告诉我它需要 memset。 asm 文件以便继续调试。

{ 内部到底发生了什么?

最佳答案

花括号建立作用域和生命周期。在一对花括号内创建的对象在它们之外是不可访问的。它们不是代码;但是,由于对象可能会在您退出时被释放,因此编译器可能会生成代码作为右大括号的结果。

关于单步进入左大括号,您实际上是单步进入大括号内的第一行可执行代码。该行代码可以解释为什么调试器试图进入 memset.asm。

关于c++ - 大括号中发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33952773/

相关文章:

c++ - 如何使用初始化列表 C++ 初始化数组

c++ - C++中构造函数调用参数

c# - 在读卡器当前的智能卡上找到证书

c++ - Boosts 说 boost::log 不支持 fork 进程。如果记录器直到 fork 之后才初始化,情况仍然如此吗?

c++ - 为什么这些访问方法会导致内存泄漏呢?

c++ - 如何从 unique_ptr<Base> 的 vector 中获取派生迭代器?

c++ - unique_ptr 编译错误

visual-studio-2012 - 如何解决 Visual Studio 2013 中的无效指针问题

SQLite.WP81 扩展 SDK 安装在 VS2013 U2 上但无法引用 WP 8.1 项目中的程序集

c++ - atoi() 没有按预期工作