了解mmap size参数

时间:2012-02-23 04:33:01

标签: c c99 mmap

我很难理解mmap的size参数(抱歉我的C生锈了)。例如(取自另一个SO帖子)

如果我们有:

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 个答案:

答案 0 :(得分:2)

首先,当您使用mmap获取内存时,您的问题中没有任何内容专门针对mmap。如果你刚刚做了同样的结论:

container *memory = malloc(500*sizeof(container));

在任何一种情况下,您都有一个长度为500*sizeof(container)字节的内存块,并且返回的指针可以被视为指向500 container个结构的数组的第一个元素。