寻找一种快速而又脏的方法来识别构造函数的调用者(或任何函数)我正在编写宏来帮助通过转储this
指针来识别内存泄漏OutputDebugString
.
知道调用ctor和dtor的位置有助于识别问题.
tnx\0
如果你正在使用visual studio,你可以附加调试器,而不是让断点有一个跟踪点.您可以通过右键单击断点并选择来完成此操作When Hit...
.然后选择打印包含堆栈跟踪的消息.此消息将发送到输出窗格,您可以随意分析所有呼叫.
我能想到的最好方法是在调试器中运行程序并在构造函数中放置断点.接下来,检查调用堆栈.
如果要在一个特定类中定位一个特定分配,则可以保留分配计数并查看未释放的分配编号.再次运行程序,并打破正确的分配号码.
如果您需要将调用堆栈转储到日志中,我知道可以使用例如win32 API生成堆栈转储.更通用的方法是将显式调用堆栈保持为全局/线程特定状态,例如在std::vector
-object中.(使用RAII确保每个push_back
都伴随着a pop_back
)