【发布时间】:2011-09-30 20:43:37
【问题描述】:
我有一个空的向量,有东西在某处填充它,但我找不到它。我想设置一个内存断点,以便当 push_back 发生时程序会中断。
我使用的是 Visual Studio 2008,问题是向量没有在监视窗口中显示其内部成员(它似乎具有自定义格式)。它看起来像这样:
myVector[0]() std::vector >
表示大小为 0。有什么提示吗?
【问题讨论】:
-
为什么不在 push_back 上设置断点?
-
这还不错,但不会捕获其他情况,例如调整大小、分配等。但是谢谢!
-
向量没有虚函数,只有三个成员。一个是指针,一个是分配大小,一个是向量中实际元素的数量。在不知道实际的类布局的情况下(尽管您可以在
标头中查找它),通过反复试验应该不难找到要查看的内存地址(很可能是 vec+ sizeof(void*)) -
如果您添加 '!'观察窗口中的修饰符,将不会使用自定义可视化工具,您将看到任何变量的原始成员。在监视窗口中添加
myVector,!而不是myVector,然后瞧。 -
不知道'!'诡计。谢谢!
标签: c++ visual-c++ stl vector breakpoints