K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>これは、この構造体の例よりも もっと合法な使い方である、 >>単なる可変長配列を realloc() した場合にも起きる問題ですね。 > >うーん、たとえば折れ線を表現するときに、 > >typedef struct { > int point_count; > Point *point; >} Polyline; > >typedef struct { > int point_count; > Point point[1]; >} Polyline; > >というふたつの実現方法があって、どちらを使うかを考えたとき、 >後者の方法だと、pointの数を増減させるたびにPolylineのアドレスが >変わってしまう、ということを言いたかったのですが。 >確かにどちらもrealloc()すればpointの指すアドレスは変わりますが、 >「pointはPolyline以外誰も指してないけど、Polylineを指してる奴は >いっぱいいる」というケースはたぶんたくさんあって、後者の方が >危険度がかなり高いと思います(程度問題にせよ)。 > >>この手法は、C99 で合法化されたと考えて良いと思います。 >>以下参照: >>http://seclan.dll.jp/c99d/c99d04.htm#dt19990726 > >これはそうですね。 >そういえばGCCにも、point[0]と書ける拡張機能がありました。 >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!