2016/5/15 (日) 19:47:35 taki |
マスター 教えてください。
動的配列を使う度に、以下の記事が気になって心配になります。
------------------------------------------
Delphi/動的配列の罠
http://tobysoft.net/wiki/index.php?Delphi%2F%C6%B0%C5%AA%C7%DB%CE%F3%A4%CE%E6%AB
動的配列を「string のようなものだ」と思っていると痛い目に合います。
動的配列は参照カウンタつきポインタ
「代入したときは参照カウンタをインクリメント」してくれ、
「スコープが外れたときは、参照カウンタをデクリメントし、
0になったら自動的に開放」はしますが、
「書き換えた時にコピー(copy on write)」はしてくれないのです。
------------------------------------------
説明はヘルプの「動的配列」のところに書いてあるそうなのですが、
Delphi XP4 Starter のHELPでキーワードに動的配列を入力しても説明が
見つかりません。
記事の説明のコードを見ると、単純に := で代入をするとポインタが
コピーされるので、「代入元と代入先が同じメモリーを参照します」と
読めるのですが、他に何か罠があるのでしょうか?
言葉で分からないのは「参照カウンタつきXX」の部分です。
|
|