0
中實現aligned_malloc問題: 爲什麼我們聲明p2
爲void **
?爲什麼不是p2*
?使用malloc在C
我們正在返回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;
}
http://stackoverflow.com/questions/12504776/aligned-malloc-in-c –
我認爲瑪麗亞從上面得到的功能鏈接。但她卻問了一個不同的問題。 –