我正在构建malloc使用 mmap的自定义实现。
如果用户想要分配 500 字节的内存,我调用mmap(0, 500, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0). mmap返回一个指向大小为 4096 的块的指针(如果这是页面大小)。
在我的链表中,我希望将一个块设置为 500 字节标记为已占用,并将一个块设置为 4096-500=3596 字节标记为空闲。尚不清楚,但是mmap实际分配了多少内存。我怎样才能得到这些信息?
有没有办法做到这一点
bool retA = true, retB=false retC=true,retD=false;
return ( (if RetA -> A) + (if RetB -> B) + (if RetC -> C) + (if RetD -> A) )
Run Code Online (Sandbox Code Playgroud)
基本上如果{A,B,C,D] = {1,2,3,4},返回值是1 + 0 + 3 + 0 = 4.您可以使用16个不同的if/else语句执行此操作,但代码不漂亮
public int getRGB(Object inData) {
return (getAlpha(inData) << 24)
| (getRed(inData) << 16)
| (getGreen(inData) << 8)
| (getBlue(inData) << 0);
}
Run Code Online (Sandbox Code Playgroud)
那么,这个返回语句实际上做了什么?四个整体被转移,但返回的是什么?