喫茶XRAYトップページ

[スレッド全体
]

[9927] 今更きけない 動的配列…(いや、まぁ聞くんだけどさ)返信 削除
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」の部分です。


[9935] Re:今更きけない 動的配列…(いや、まぁ聞くんだけどさ)返信 削除
2016/5/16 (月) 13:17:34 福士
とりあえずここを読むといいんじゃないですかね。XE4のオンラインヘルプですけど。

動的配列 (構造化型(Delphi) - RAD Studio)
http://docwiki.embarcadero.com/RADStudio/XE4/ja/%E6%A7%8B%E9%80%A0%E5%8C%96%E5%9E%8B#.E5.8B.95.E7.9A.84.E9.85.8D.E5.88.97

動的配列型 (内部データ形式(Delphi) - RAD Studio)
http://docwiki.embarcadero.com/RADStudio/XE4/ja/%E5%86%85%E9%83%A8%E3%83%87%E3%83%BC%E3%82%BF%E5%BD%A2%E5%BC%8F#.E5.8B.95.E7.9A.84.E9.85.8D.E5.88.97.E5.9E.8B


[9945] Re2:今更きけない 動的配列…(いや、まぁ聞くんだけどさ)返信 削除
2016/5/16 (月) 19:23:14 taki
▼ 福士さん
> とりあえずここを読むといいんじゃないですかね。XE4のオンラインヘルプですけど。
>
> 動的配列 (構造化型(Delphi) - RAD Studio)
> http://docwiki.embarcadero.com/RADStudio/XE4/ja/%E6%A7%8B%E9%80%A0%E5%8C%96%E5%9E%8B#.E5.8B.95.E7.9A.84.E9.85.8D.E5.88.97
>
> 動的配列型 (内部データ形式(Delphi) - RAD Studio)
> http://docwiki.embarcadero.com/RADStudio/XE4/ja/%E5%86%85%E9%83%A8%E3%83%87%E3%83%BC%E3%82%BF%E5%BD%A2%E5%BC%8F#.E5.8B.95.E7.9A.84.E9.85.8D.E5.88.97.E5.9E.8B


ありがとうございます。
お気に入りに登録します。

参照カウンタの件は、
『動的配列変数は暗黙にポインタであり、長い文字列型と同じ参照カウントの
方法を使って管理されます。』
とあるので、プログラマは気にしなくて良いみたいですね。


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82