c - 如何验证指定的内存地址是否已分配
问题描述
我在 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 并且当我假设它已经是十六进制并且我不知道如何避免它不必要地转换时,它会将其更改为十六进制值.
解决方案
推荐阅读
- javascript - 表格拖动器的基本实现
- python - 是否可以在 Python 中将二进制文件的内容作为字典读取?
- python - 定义的 PiCamera camera.shutter 与查询的 camera.exposure_speed 不匹配
- r - 不使用时导入文件(不再使用)
- neo4j - Neo4j MATCH 查询具有不同关系的 3 个节点之间的连接
- reactjs - React Webpack 创建样板
- ios - 如何根据给定的边界/容器使 UIImageView 具有正方形大小
- javascript - 数据表 - 无法放置列选择器
- node.js - 即使在节点服务器中使用 npm cors 插件后也出现 CORS 问题
- macos - 如何在不使用外部服务的情况下解码 Mac 序列号?