我找到了这段代码:
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 行。为什么要对偏移量求和两倍?
谢谢
我写了这段代码:
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的所有论点......