我在此链接中找到了代码(" How to get the starting/base address of a process in C++?")。
当我运行它时,它说我("基地址:400000")现在我知道内存地址工作为十六进制十六进制。所以我想问你很多问题:
谢谢
答案 0 :(得分:0)
如何将其翻译成内存地址?
该号码已代表内存地址,无需翻译。
我如何使用该地址&修改值?
在嵌入式系统领域,我们使用指针并将它们分配给指针。如果我们想要访问16位寄存器或存储器地址,我们会为该值分配一个uint16_t
指针
uint16_t * memory_pointer = (uint16_t *) 0x40000000;
是否可以打印进程正在使用的所有内存地址?
这是一个操作系统问题。某些操作系统会严重阻止一个程序访问另一个进程的内存区域。 "其他流程"可以在进程运行时交换到磁盘,并使用与进程相同的内存区域。因此,这是否可行取决于您平台的操作系统。
可以获得地址指示的值吗?
取决于操作系统和平台。某些平台在特定地址处具有内存,并且访问该范围之外的地址会导致未定义的行为。
某些操作系统会防止访问进程外的内存(例如内核的内存)。在这种情况下访问内存的结果取决于操作系统。
访问内存的方法是取消引用指针。在C ++中,对于字节访问,您将使用指向uint8_t
的指针。