小编hte*_*teo的帖子

对齐的 malloc C++ 实现

我找到了这段代码:

void* aligned_malloc(size_t required_bytes, size_t alignment) {
int offset = alignment - 1;
void* P = (void * ) malloc(required_bytes + offset);
void* q = (void * ) (((size_t)(p) + offset) & ~(alignment - 1));
return q;
}
Run Code Online (Sandbox Code Playgroud)

这就是C++中对齐的malloc的实现。对齐的 malloc 是一个支持分配内存的函数,使得返回的内存地址可以被特定的 2 的幂整除。例子:

align_malloc(1000, 128) 将返回一个 128 的倍数的内存地址,该地址指向大小为 1000 字节的内存。

但我不明白第 4 行。为什么要对偏移量求和两倍?

谢谢

c++ memory malloc heap-memory

3
推荐指数
1
解决办法
2939
查看次数

缺少1个必要的位置参数 - 为什么?

我写了这段代码:

keyList=['a','c','b','y','z','x']
letterlist=['b','c','a','z','y','x']

def keyL(x, y):
    xIndex=keyList.index(x)
    yIndex=keyList.index(y)
    print(cmp(xIndex,yIndex))
    return cmp(xIndex,yIndex)



print(letterlist)


letterlist.sort(key=lambda x, y: keyL(x, y))
print(letterlist)
Run Code Online (Sandbox Code Playgroud)

但是当我运行代码时,我有这个错误:

File "C:\Python33\prova.py", line 14, in <module>
    letterlist.sort(key=lambda x, y: keyL(x, y))
TypeError: <lambda>() missing 1 required positional argument: 'y'
Run Code Online (Sandbox Code Playgroud)

为什么?我写了lambda的所有论点......

python

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×1

heap-memory ×1

malloc ×1

memory ×1

python ×1