reallocと構造体

酔った頭でよく考えてみよう。

まずrealloc。このソースの周辺、reallocの戻りをちゃんと使っているので、同じアドレスでメモリの領域だけが増えるという訳ではない、といことは、この書いた人は分かっていた様子だ。一方構造体。構造体には何が含まれているのか。値でしかない。値は現物かもしれないし、その値は実はポインタかもしれない。
そしてこのプログラムは15年前からCで書かれていて、基本的にはグローバル変数だ。構造体自体をmallocしたりは稀だ。

やってることと言えば、構造体のメンバにメモリ領域を割り当てた先を保存しているくらい。

そこにrealloc。なぜ最初から領域を確保しておかないのかは、仕様変更の時期の微妙な何かがあるのでしょう、きっと。そして、構造体のメンバを指し示すタイプ量が惜しかったのか、構造体のメンバ(ポインタ)の値をローカル変数にコピーしつつ構造体のメンバはreallocしてるのに、なぜかコピーしたポインタはそのまんま。

うーん。8割くらいはこのパターンだと良いな・・・。残りはrealloc候補のポインタが関数の引数として渡されてきているので、関数の呼出し元をどこまで遡るはめになるのか恐ろしくて夜も寝られない+昼は眠い(お決まりのパターン)。