何も書かないのもなんなので・・・
C++を始めて間もない頃、
vector型が使いやすくてとても感激していた
・・・が、push_backするとクラッシュするという現象に悩まされていた
なんでやねん、と思っていたら
push_backする際に、メモリ領域が足りかったらその変数が引っ越してしまい、ポインタが行方不明(と言う表現もなんだけど)になっていた
別の領域をnewして今まであったところをdeleteしてんのかね?
そういえば、最初にhoge.data()なんてやって、ポインターを取ってました
まあ、もともとC++をやっている人には当然の話なのだけど
当時、Cやその派生言語は明示的にメモリを取るものだと思っていたもので、push_backしたら、内部でそう言う処理が走るものだとは思わなかった
と言うお話し
C#とかだと、変数のメモリ位置が移動するというのは当たり前の話で
VC++のDLLを組み込む際はわざわざ変数が移動しないようにピン留めしてたりしたのだけど。
コメント
コメントを投稿