当使用gdb"next"跟踪下面的代码时,
int main(){
vector<int> a;
a.push_back(28);
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么这条线显示两次?
源代码t.cpp是使用编译的
我注意到post gdb,为什么"next"显示每个源代码行两次?,但没有给出答案.
提前致谢!
小智 5
因为G ++将对象构造函数的代码分配给与析构函数相同的行,正如"一些程序员老兄"建议的那样.在Compiler Explorer网站上查看生成的程序集.
这可能是因为在离开范围时调用析构函数,这可能导致多个对象在同一行上被销毁.在调试器中多次显示'}'并不是很有用,因为用户无法看到下一个要销毁的对象.
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |