我正在调试GDB中的std::vector
并且我无法告诉该向量是否相信其当前大小。向量声明为std::vector<custom_struct_t *> myVec;
。
(gdb) p myVec.size()
Cannot evaluate function -- may be inlined
检查载体:
(gdb) p myVec
[...]
_M_impl = {
[...]
_M_start = 0x8052a0500,
_M_finish = 0x8052a0500,
_M_end_of_storage = 0x8052a0600
}
}, <No data fields>}
我在此处看到_M_start
和_M_finish
的值相同。这是零长度向量还是一长向量的指示?
答案 0 :(得分:4)
对于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); }
此源代码可在GCC online documentation。
中找到