mmapのサイズパラメータを理解するのが苦労しています(申し訳ありませんが、私のCは錆びています)。 (たとえば、別のSOポストから採取)mmapのサイズパラメータを理解する
我々が持っている場合:
typedef struct container {
int counter;
} container;
container *memory;
memory = mmap(NULL, 500*sizeof(container), PROT_READ|PROT_WRITE, MAP_SHARED, -1, 0);
container *entry = (container *) malloc(sizeof(container));
entry->counter = 1;
// Just arbitrarily
memory[1] = *entry;
メモリ[1]は単にコンテナへのポインタでなく、したがってはsizeof(容器)ではないのだろうか?あるいは、mmapを使用する方法がありますが、実際にはコンテナーの500エントリしか挿入されないことを保証しますか?または、sizeof(コンテナ)のステップでメモリにアクセスする必要がありますか?
ありがとうございます!
メモリはコンテナへのポインタなので、メモリ[1]はコンテナです。これは*(メモリ+ 1)と同じです。 –