C++ 当向量<;int>;长度增加?

C++ 当向量<;int>;长度增加?,c++,visual-c++,stl,vector,breakpoints,C++,Visual C++,Stl,Vector,Breakpoints,我有一个向量是空的,有东西在某处填充它,我找不到它。我想设置一个内存断点,以便在发生回推时程序将中断 我使用的是Visual Studio 2008,问题是向量没有在“监视”窗口中显示其内部成员(它似乎具有自定义格式)。它看起来就像这样: myVector[0]()std::vector 表示大小为0。有什么建议吗?这个答案适用于VS 2010-其他版本的详细信息可能有所不同 由于调试器使用数据可视化工具(或任何其名称)来显示std::vector的状态,因此必须查看标题以确定类的实际成员的名称

我有一个向量是空的,有东西在某处填充它,我找不到它。我想设置一个内存断点,以便在发生回推时程序将中断

我使用的是Visual Studio 2008,问题是向量没有在“监视”窗口中显示其内部成员(它似乎具有自定义格式)。它看起来就像这样:

myVector[0]()std::vector>


表示大小为0。有什么建议吗?

这个答案适用于VS 2010-其他版本的详细信息可能有所不同

由于调试器使用数据可视化工具(或任何其名称)来显示
std::vector
的状态,因此必须查看
标题以确定类的实际成员的名称以及哪些成员可能负责跟踪元素数。一种简单的方法是逐步调用
vector::push_back()

在VC++2010中,这是一个名为
\u Mylast
的成员指针

因此,您所要做的就是在写入
&v时设置一个数据断点。_Mylast
(其中
v
是您感兴趣的调试向量)


下一次添加元素时,调试器将中断,调用堆栈将精确显示位置。

它在VC2010中显示0,[0]表示向量的大小,项目将显示在()。
您还可以使用内存输出窗口查找内存地址。

为什么不在push_-back上设置断点?这还不错,但不会捕获其他情况,如调整大小、分配等。谢谢!向量没有虚函数,它只有三个成员。一个是指针,一个是分配大小,一个是向量中实际的元素数。在不知道实际的类布局的情况下(尽管您可以在标题中查找),通过反复试验,应该不难找到要查看的内存地址(如果添加“!”,很可能是
vec+sizeof(void*)
)在“监视”窗口中,将不使用自定义可视化工具,您将看到任何变量的原始成员。添加
myVector
而不是
myVector
到watch窗口,瞧,我不知道“!”戏法谢谢您需要在Windows 10上的VS2019中输入“v.\u Mypair.\u Myval2.\u Mylast”,以记住数据断点的字符串,如“v.\u Mypair.\u Myval2.\u Mylast”?它似乎只记得计算出的地址,并且您需要在每个调试会话中删除旧的/添加新的,这是一个噩梦。。。。