c++ - std::vector _M_start 和 _M_finish 相同
问题描述
我std::vector
在 GDB 中调试 a ,但我不知道向量认为它的当前大小是什么。向量被声明为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
是相同的值。这是表示长度为零的向量还是长度为一长度的向量?
解决方案
对于 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 在线文档中找到此源代码。
推荐阅读
- javascript - 如何用键移动画布
- jenkins - 使用 jenkins 将 .war 从 nexus 部署到 weblogic
- events - BlockPlaceEvent 之后的自定义爆炸
- c# - WPF 的 Webview2 控件在目标机器上不起作用
- parsing - SwiftSoup - 遍历类似 DOM 的内部解析文档?
- c++ - 为什么这给了我无效的基类错误?
- r - 通过从包含变量名称的列表中引用来操作变量
- android - 在 React Native 中更改状态栏颜色
- react-native - React Native Share 通过共享视图显示“无法发送空消息”错误
- python-3.x - 我的输出显示 tkinter 小部件错误和按钮错误,但不显示按钮