本文主要是介绍C语言如何获得变量的物理地址以及简单的写时拷贝测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基本的思路:linux下的/proc/self是对自身进程映射的文件夹,里面的pagemap允许查看到每个虚拟页映射到的物理页。
#include <stdio.h>
#include <unistd.h>
#include <inttypes.h>
intptr_t Mytop(uintptr_t vaddr)
{FILE *pagemap;intptr_t paddr = 0;int offset = (vaddr / sysconf(_SC_PAGESIZE)) * sizeof(uint64_t);uint64_t e;// https://www.kernel.org/doc/Documentation/vm/pagemap.txtif ((pagemap = fopen("/proc/self/pagemap", "r"))) {if (lseek(fileno(pagemap), offset, SEEK_SET) == offset) {
这篇关于C语言如何获得变量的物理地址以及简单的写时拷贝测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!