首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C/Posix问题

C/Posix问题
EN

Stack Overflow用户
提问于 2011-06-17 21:25:15
回答 1查看 132关注 0票数 3

我已经在JamVM上工作了两个星期,这是一个小但功能强大的Java虚拟机。

现在我正在试图弄清楚内存是如何实现的,我被两个愚蠢的C语言问题所困扰:

char *mem = (char*)mmap(0, args->max_heap, PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON, -1, 0);

-->参数-1代表文件描述符,这是什么意思?(我已经读过mmap man了,但还没找到,可能是我误解了……)

heapbase = (char*)(((uintptr_t)mem+HEADER_SIZE+OBJECT_GRAIN-1&)~(OBJECT_GRAIN-1)) HEADER_SIZE;

-->什么是1&?我在C规范中找不到它...

谢谢,

扬恩

EN

回答 1

Stack Overflow用户

发布于 2011-06-17 21:32:40

回答你的第一个问题。来自man page的。

除非设置了MAP_ANONYMOUS,否则

fd应该是有效的文件描述符。如果设置了MAP_ANONYMOUS,那么在Linux上会忽略fd。但是,如果指定了MAP_ANONYMOUS (或MAP_ANON),则某些实现要求fd为-1,可移植应用程序应确保这一点。

所以它是-1,因为正在使用MAP_ANONYMOUS

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6386406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档