【发布时间】:2023-03-24 11:49:01
【问题描述】:
问题:
为什么我们将p2 声明为void **?为什么不p2*?
我们正在返回 p2,但我们的返回函数类型是 void *。这没有任何意义。编译器会说不匹配的返回类型。
void *aligned_malloc(size_t required_bytes, size_t alignment) {
void *p1;
void **p2;
int offset=alignment-1+sizeof(void*);
p1 = malloc(required_bytes + offset); // the line you are missing
p2=(void**)(((size_t)(p1)+offset)&~(alignment-1)); //line 5
p2[-1]=p1; //line 6
return p2;
}
【问题讨论】:
-
我认为 Maria 从上面的链接中得到了这个功能。但她提出了一个不同的问题。