索引到mmap?

时间:2012-02-21 22:54:12

标签: malloc c99 mmap

我正在尝试创建一个结构数组作为一种基本缓存。

给定一个指向mmap的void *指针,mmap是否提供了索引到它的任何可靠性?我认为概念上mmap只是提供了一块内存,但后来我对它能用它做些什么感到困惑。我可以把它想象成一个malloc吗?

void * mptr = mmap(NULL, 1024*1024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);

感谢您的任何澄清。

2 个答案:

答案 0 :(得分:1)

无论您使用的是哪个分配器(mmapmallocsbrk,...),您仍然会留下指向内存的指针。在使用内存之前,您必须告诉编译器该内存中是否有类型。使用C风格或C ++转换来告诉编译器如何处理内存。

答案 1 :(得分:1)

是的,您可以将其视为malloc,但您必须使用munmap(mptr,1024 * 1024)而不是free(mptr)来释放它。

如果要将其编入索引,请将其转换为其他类型,例如char:

char *cptr = (char*) mptr; 

然后你可以使用cptr [10]索引它,例如。