大括号中发生了什么

What is happening in the Curly Braces

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

{里面究竟发生了什么?

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

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