文字列依存性

提供: Appmethod Topics
移動先: 案内検索

文字列から PChar への変換 への移動


PChar を取る関数を使用する場合、長い文字列を、null で終わる文字列に変換する必要が生じることがあります。文字列を PChar にキャストしなければならない場合、その結果できる PChar の存続期間を管理しなければならない点に注意してください。長い文字列は参照をカウントされるため、PChar への文字列の型キャストは、その文字列への依存性を 1 つ増加させます。しかし実際には参照カウントはインクリメントされません。参照カウントが 0 になると、たとえそれに対してまだ別の依存性があったとしても、文字列は破壊されてしまいます。つまり、キャストされた PChar も、それを渡したルーチンがまだ使用していたとしても消えてしまいます。例:

procedure my_func(x: string);
begin
  // do something with x
  some_proc(PChar(x)); // cast the string to a PChar
  // you now need to guarantee that the string remains
  // as long as the some_proc procedure needs to use it
end;

関連項目