我正在尝试调试简单的向量推回操作。 只需执行一次后推操作,向量的大小就会从0变为很大的值。
我到了stl_vector库中的以下位置,回滚几乎完成了,我看到了:
(gdb)打印此-> _ M_impl._M_start
$ 36 =>(std :: _ Vector_base :: pointer)0x717910
(gdb)打印此-> _ M_impl._M_finish
$ 37 =(std :: _ Vector_base :: pointer)0x7179f0(gdb)
(gdb)打印尺寸()
$ 38 = 9564978408590137876
我看到size函数已实现为:
size() const _GLIBCXX_NOEXCEPT
{ return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
当我在GDB中打印两个指针的差异时,我看到:
(gdb)打印(this-> _ M_impl._M_finish-this-> _ M_impl._M_start)
$ 40 = 1
我不明白,为什么size函数返回这么大的值。 有提示吗?