【发布时间】:2019-06-20 04:43:57
【问题描述】:
当我运行我的项目时,它会加载并开始运行,但一段时间后会崩溃。我得到的日志是这样的:
尝试释放无效指针 0x2df2fc6b9000
现在这是 chromium 代码,我不知道这个代码库中的程序哪里出错了。所以我想知道是否可以让变量名给出地址0x2df2fc6b9000。谢谢。
【问题讨论】:
-
你需要使用调试器。
标签: c++ pointers dereference
当我运行我的项目时,它会加载并开始运行,但一段时间后会崩溃。我得到的日志是这样的:
尝试释放无效指针 0x2df2fc6b9000
现在这是 chromium 代码,我不知道这个代码库中的程序哪里出错了。所以我想知道是否可以让变量名给出地址0x2df2fc6b9000。谢谢。
【问题讨论】:
标签: c++ pointers dereference
你不能。
例如:
int i = 10;
int* p1 = &i;
int* p2 = p1;
给定&i,没有办法说变量是p1 或p2。尽管我们关心的是,可能根本没有任何p1 或p2。
该错误消息强烈表明您的代码未正确使用内存。您必须尝试将代码减少到Minimal, Reproducible Example。您可能会在这样做的过程中找到问题的根源。
【讨论】:
如果您在调试器中运行包含符号信息的程序的调试版本,您可能会找到变量的名称。调试器可能在应用程序崩溃的程序点显示堆栈上的符号列表以及适当的地址。在您的情况下,您必须找到一个指针变量,其值包含在错误中。
调试器还应该显示发生错误的行。通过查看此行周围的代码可能比通过内容搜索有问题的变量更容易找到错误。
如果程序中没有包含符号信息,就不可能将内存位置与变量名匹配。
【讨论】: