PChar ローカル変数を返す

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

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


PChar での作業で発生する一般的なエラーは、ローカル変数をデータ構造体に格納したり、それを値として返してしまうことです。ルーチンが終了すると、PChar は、メモリへのポインタであり、参照カウントされる文字列のコピーではないため、消えてしまいます。例:

function title(n: Integer): PChar;
var
  s: string;
begin
  s := Format('title - %d', [n]);
  Result := PChar(s); // DON'T DO THIS
end;

この例では、文字列データへのポインタを返してますが、この文字列データは、title 関数が戻った際に解放されてしまいます。

関連項目