据我所知, 实际上包含一些操作,例如销毁堆栈分配的对象,因为当对象的析构函数中发生错误时,VS.NET 会指向 Curly 的关闭大括号,甚至您可以使用
F11
进入它并查看已调用的析构函数中发生了什么。但是,我注意到 {
也是一个操作,如果我尝试使用 F11
进入它,VS.NET 告诉我它需要 memset。 asm
文件以便继续调试。
{
内部到底发生了什么?
最佳答案
花括号建立作用域和生命周期。在一对花括号内创建的对象在它们之外是不可访问的。它们不是代码;但是,由于对象可能会在您退出时被释放,因此编译器可能会生成代码作为右大括号的结果。
关于单步进入左大括号,您实际上是单步进入大括号内的第一行可执行代码。该行代码可以解释为什么调试器试图进入 memset.asm。
关于c++ - 大括号中发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33952773/