tur*_*too 0 c++ gdb vector stdvector
我正在std::vectorGDB 中调试 a ,但我无法判断向量认为其当前大小是多少。该向量被声明为std::vector<custom_struct_t *> myVec;。
(gdb) p myVec.size()
Cannot evaluate function -- may be inlined
Run Code Online (Sandbox Code Playgroud)
检查向量:
(gdb) p myVec
[...]
_M_impl = {
[...]
_M_start = 0x8052a0500,
_M_finish = 0x8052a0500,
_M_end_of_storage = 0x8052a0600
}
}, <No data fields>}
Run Code Online (Sandbox Code Playgroud)
在这里我看到_M_start和_M_finish是相同的值。这表示零长度向量还是一长度向量?
对于 libstdc++ (gcc) 实现,这表示 0 大小的向量,如std::vector::size()函数所示:
size_type
size() const _GLIBCXX_NOEXCEPT
{ return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
Run Code Online (Sandbox Code Playgroud)
例如,可以在GCC 在线文档中找到此源代码。