mmap()
iOSまたはOSXのフレームワークでどのように機能するかについて少し混乱しています。
ファイルがを使用して仮想メモリにマップされmmap()
、そこからデータが要求された場合、カーネルはデータ内のページをRAMに送信します。これは実際にオブジェクトの作成方法にどのように影響しますか?
通常、alloc
/を使用してオブジェクトを作成する場合init
、メモリブロックが割り当てられ、オブジェクトが開始されます。しかし、データが仮想メモリmmap
のedファイルにある場合はどうなるでしょうか。alloc
オブジェクトで呼び出す必要がありますか?オブジェクトに割り当てられたメモリは、仮想メモリからのデータでいっぱいになりますか?または、呼び出しをスキップしてalloc
、仮想メモリ内のデータへのポインタを渡すだけですか?
たとえば、画像や音声ファイルの場合、ファイルが仮想メモリのどこにあるかがわかっている場合、オブジェクトをどのように設定しますか?
データを割り当てる場合、データがすでにRAMにページングされていると、データは複製されませんか?
仮想アドレスのメモリを使用すると、ヒープに割り当てる必要がなくなると思っていました。