我对在iOS或OSX框架中使用mmap()
不太清楚。
如果使用mmap()
将文件映射到虚拟内存,并请求数据,则内核将数据分页到RAM中。这实际上如何影响创建对象的方式?
通常使用alloc
/init
创建对象,分配内存块并初始化对象。但是,如果数据驻留在虚拟内存中,在mmap
文件中呢?alloc
需要在对象上调用吗?为对象分配的内存是否被填充了来自虚拟内存的数据?还是跳过alloc
调用,只需传递指向虚拟内存中数据的指针即可?
例如,图像或声音文件,如果我知道文件在虚拟内存中的位置,该如何设置对象?
如果分配数据,如果数据已分页到RAM中,难道它不会被复制吗?
我认为使用虚拟地址的内存将消除在堆上分配的需要。