我正在尝试创建一个结构数组作为一种基本的缓存。
给定一个指向mmap的空*指针,mmap是否提供了索引到mmap的能力?我认为从概念上讲,mmap只是提供了一个内存块,但是我有点困惑,不知道我能用它做什么。我能把它想象成malloc吗?
void * mptr = mmap(NULL, 1024*1024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);感谢你在这里所做的任何澄清。
发布于 2012-02-22 07:03:44
是的,您可以将其视为malloc,但您必须使用munmap(mptr,1024*1024)而不是free(mptr)释放它。
如果要对其进行索引,请将其转换为另一种类型,例如char:
char *cptr = (char*) mptr; 例如,您可以使用cptr10对其进行索引。
发布于 2012-02-22 06:57:32
不管你使用的是什么分配器(mmap,malloc,sbrk,...)你仍然需要一个指向内存的指针。在你可以使用内存之前,你必须告诉编译器什么类型的在内存中。使用C样式或C++强制转换来告诉编译器如何处理内存。
https://stackoverflow.com/questions/9386615
复制相似问题