質問: p2
をvoid **
と宣言するのはなぜですか?なぜp2*
?Cでmallocを使ってaligned_mallocを実装する
私たちは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 –
リンク。しかし、彼女は別の質問をしています。 –