android - 在linux或android中获取文件/照片的物理内存地址
问题描述
我在android中有一个文本文件(或jpg照片),它本质上是一个修改过的linux系统(我有一些使用NDK在android中编写本机C代码的经验)。我只是想找到这个文件/照片开头的物理内存地址。所以得到一个类似的返回值:0x9abcdef0。我的理解是文件/照片存储在物理内存地址空间的某个地方,如果这个假设是错误的,请告诉我。
我研究了诸如 mmap 之类的调用和一些 SO 帖子,但它们并没有真正做我想要的,只是返回地址。我也不需要诸如 open() 之类的函数或与文件描述符相关的东西,以获取较低级别的真实地址。
解决方案
我的理解是文件/照片存储在物理内存地址空间的某个地方,如果这个假设是错误的,请告诉我。
这个假设是错误的。
文件在“磁盘”上永久存储——在典型的 Android 设备上,这将是 eMMC,本质上是焊接在主板上的 SD 卡。磁盘上的文件存储在文件系统中,这是一组数据结构,可让您从路径名到文件以及从文件和偏移量获取文件偏移量所在的物理存储位置。
文件通常不会永久存在于物理内存中。当被访问时,它们的一部分将临时驻留在内存中不同的物理地址。如果mmap
ped 作为共享映射,它们将在映射的生命周期内在进程中的固定虚拟地址处可寻址,但此映射背后的物理内存可以随时变化。
推荐阅读
- java - 如何修复 Android Studio 4 中启动时的崩溃?
- python - Python 绘图错误:annotate() 为参数“xy”获取了多个值
- r - 合并函数用日期填充缺失的行名
- java - 不同java版本的notifyAll()问题
- javascript - 异步更新和删除 firestore 数据和 firebase 存储
- c++ - 如何在 C++20 'requires' 表达式中使用未指定的类型?
- powershell-3.0 - 立即执行计时器操作(而不是等待 Timer.interval)[Powershell3]
- css - 与 CSS 选择器相关的查询
- java - 没有组件的android studio安装
- excel - Excel VBA 从多个工作表复制图表,然后将它们组合在单独工作表上的单个图表中