struct S {
size_t len;
type-X buf[0];
};
という状況下で、
size_t const len = 500;
struct S* const p = (struct S*)malloc(sizeof(struct S) + sizeof(type-X)*len);
p->len = len;
p->buf = (type-X*)((size_t)p + sizeof(struct S));
という処理を偶に見かけますが、これだと末尾パディングの影響でbuf[1]のアドレスがtype-Xのアライメントに沿っていない可能性があるので、不正な気がします
具体的には
struct S {
size_t len;
type-X* buf;
};
として、
size_t const len = 500;
size_t const padding_for_align_x = alignof(type-X)*(sizeof(struct S)%alignof(type-X) == 0 ? 0 : 1);
struct S* const p = (struct S*)malloc(sizeof(struct S) + padding_for_align_x + sizeof(type-X)*len);
p->len = len;
p->buf = (type-X*)((size_t)p + sizeof(struct S) + padding_for_align_x);
...などとしないとアライメント違反になりそうな気がするのですが、この認識は正しいでしょうか
C言語なら俺に聞け 149
■ このスレッドは過去ログ倉庫に格納されています
52デフォルトの名無しさん (ワッチョイ 937f-nWRh)
2018/11/11(日) 12:27:27.91ID:2PA7tL2j0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★5 [ぐれ★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 高市内閣「支持」64%「不支持」19% NHK世論調査 ★2 [少考さん★]
- 【速報】気象庁がマグニチュード7.5に修正しました [ニョキニョキ★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- かっぱ寿司←こいつが天下取れなかった理由
- 何でデートでリュック背負って来たらダメなの?
- 有名配信者「サッカーで野蛮なのは日本の黄色い猿だけ」
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 巨大地震 [957955821]
- 🖐( -᷄,ὢ)知らないんで……
