gpt4 book ai didi

c - printf C程序中的当前地址

转载 作者:IT王子 更新时间:2023-10-28 23:32:20 24 4
gpt4 key购买 nike

假设我有以下简单的 C 程序:

int main() {

int a=5, b= 6, c;
c = a +b;
return 0;
}

现在,我想知道表达式c=a+b的地址,也就是程序地址执行此添加的位置。有没有可能我可以使用 printf?顺带一提:

int main() {

int a=5, b= 6, c;
printf("Address of printf instruction in memory: %x", current_address_pointer_or_something)
c = a +b;
return 0;
}

我知道如何使用 gdb 和 info line file.c:line 找到地址。但是,我应该知道我是否也可以直接使用 printf 执行此操作。

最佳答案

在 gcc 中,您可以使用 && 运算符获取标签的地址。所以你可以这样做:

int main() 
{
int a=5, b= 6, c;

sum:
c = a+b;

printf("Address of sum label in memory: %p", &&sum);
return 0;
}

&&sum 的结果是跳转指令的目标,如果你执行了 goto sum。因此,虽然 C/C++ 中确实不存在一对一的地址到行的映射,但您仍然可以说“给我一个指向此代码的指针”。

关于c - printf C程序中的当前地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/865862/

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