gpt4 book ai didi

c++ - 如何在特定对象的特定方法中设置断点?

转载 作者:行者123 更新时间:2023-11-28 07:37:47 25 4
gpt4 key购买 nike

我的 C++ 项目中有一个讨厌的错误。有一个类

class SomeClass {
...
std::string *someString;
...
}

构造函数

SomeClass(...) {
...
someString = new std::string("");
...
}

问题是之后我只对那个特定的字符串进行操作,而不修改指针值。我一直为该字符串分配不同的字符串,例如

*someString = "whatever";
someString->assign("whatever");
*someString += 'a';

应用程序是多线程的,有一个非常讨厌的故障。在某些时候,应用程序崩溃。调试器显示变量 someString 有一个错误的指针。我不知道这怎么可能

delete someString;

从未被调用。

我查看了该字符串指针的所有引用,这是我可以告诉你的:

  1. 永远不会调用该指针上的 delete。
  2. 该指针永远不会分配给其他任何东西(以后可能会删除它)。
  3. 该字符串的指针值永远不会以任何方式改变(调试器显示“Bad Ptr”)。
  4. 其他类变量看起来很好,就像它们应该的那样。

因此,我需要找到一种方法来检查何时在特定对象上调用析构函数。事实上,对象数组。

那么,有没有办法在一组特定对象(我正在使用 visual studio 2010 proffessional)的析构函数(或任何其他方法)上设置断点?

最佳答案

如果你是多线程的,考虑为你的字符串成员实现一个锁定机制……(如果你还没有这样做的话)。一个线程极有可能试图写入一个指针,该指针正在另一个线程中重新分配……或类似的东西。多一点代码将帮助我们在更深层次的上下文中理解问题。

关于c++ - 如何在特定对象的特定方法中设置断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16397370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com