gpt4 book ai didi

c - 显示地址给出的字节内容

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:17 26 4
gpt4 key购买 nike

我必须显示从特定内存地址开始的 n 个字节的内容,即:从 0x00004000(虚拟空间中的段文本)开始的 25 个字节的输出将是 #include <stdio.h> #inclu (25 个字母)

我的想法是分配给一个 char *c给出的地址,例如:*c=address;然后 printf("%s",c); .对我来说,这在概念上是有道理的,而且我知道在某些情况下,如果地址无效,它会导致段错误。

但是我已经实现了它,它总是会导致段错误。我用 pmap <pid>了解可以显示该过程的哪些区域(低区域)。当我说“可以显示的区域”时,我指的是文本区域(代码)。

那么,我做错了什么?愚蠢的作业*c=address;

最佳答案

char *c = address;

for (int i = 0; i < n; i++) {
putchar(c[i]);
}

代码中的错误

有类似的东西

char *c;
*c = address;

无效,因为 c 是一个悬垂指针(您从未对其进行初始化)。您想将c 指向的地址设置为address:c = address

printf("%s",c);

你不知道 c 是否是一个正确的字符串,它可能包含垃圾或者可能不是 n 字节长度。这就是我使用 putchar

的原因

关于c - 显示地址给出的字节内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20550986/

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