文字列依存性
文字列から 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;