0

ashmem の割り当てと使用はうまく機能します。

ashmemFD = open("/dev/ashmem", O_RDWR);
int ret = ioctl(ashmemFD, ASHMEM_SET_NAME, "vf");
ioctl(ashmemFD, ASHMEM_SET_SIZE, size);
ashmap = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, ashmemFD, 0);

しかし、問題は、使用後にマップを解除するだけで十分なのか、それともメモリを再度解放するためにさらに何かをする必要があるのか​​ということです。

munmap((void*) ashmap,size);
4

1 に答える 1

1

マッピングを解除した後、すべてのファイル記述子を ashmem 領域に閉じる必要があります。

Ashmem 領域は、カーネルによって処理されるメモリベースのファイルと見なすことができます。それらのいずれかに開いているファイル記述子がある限り、それはメモリに保持されます。

お役に立てれば。

于 2014-06-24T08:53:42.513 に答える