gpt4 book ai didi

linux - gdb中调用malloc时出现负数

转载 作者:太空狗 更新时间:2023-10-29 11:40:30 25 4
gpt4 key购买 nike

(gdb) call malloc(5*1024*1024)
$1 = -1223639024

gdb 似乎不知道 malloc 会返回什么类型,所以它假定为 int。我不知道为什么。如果有人能给出解释就太好了。

在 C 代码中,我可以这样做:

void* (*malloc1)(long)=malloc;

然后调用 malloc1 而不是 malloc。但是我不知道如何在 gdb 中定义这样的指针。

现在我的问题是,如何定义一个函数指针来解决这个问题?

最佳答案

您需要使用调试信息进行编译(在 GCC 的情况下使用 -g)。安装 C 库的调试信息(在许多系统上的包 libc6-dbgglibc-debuginfo 中)也有帮助。

您还可以将 malloc 转换为正确类型的函数指针,如下所示:

(gdb) print ((void * (*) (size_t)) malloc) (5 * 1024 * 1024)
$1 = (void *) 0x7ffff65b2010

关于linux - gdb中调用malloc时出现负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55017240/

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