gpt4 book ai didi

C/Posix 问题

转载 作者:太空狗 更新时间:2023-10-29 16:09:18 25 4
gpt4 key购买 nike

我已经在 J​​amVM 上工作了两周,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 规范中找到它...

谢谢,

亚恩

最佳答案

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

fd should be a valid file descriptor, unless MAP_ANONYMOUS is set. If MAP_ANONYMOUS is set, then fd is ignored on Linux. However, some implementations require fd to be -1 if MAP_ANONYMOUS (or MAP_ANON) is specified, and portable applications should ensure this.

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

关于C/Posix 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com