首页 > 解决方案 > 如何验证指定的内存地址是否已分配

问题描述

我在 Ubuntu 16.04 虚拟机中工作

我有一个 C 程序,它接受一个参数,该参数预计是 0-7ffffffffffffff 之间的十六进制数。

如何检查指定的内存地址是否在我的程序的虚拟内存中分配并访问该地址的单字节内存?

编辑:所以我可以通过以下方式查看我的映射内容:

FILE *fptr = fopen("/proc/self/maps", "r");
c = fgetc(fptr);
while (c != EOF){
   print("%c\n", c);
   c = fgetc(fptr);
}

我正在使用以下函数: void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset) 返回指向分配区域的指针

但是,当我尝试使用命令行参数时,我输入 cast (void *) addr 并且当我假设它已经是十六进制并且我不知道如何避免它不必要地转换时,它会将其更改为十六进制值.

标签: cmemoryubuntu-16.04

解决方案


推荐阅读