PChar ローカル変数を返す
文字列から 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
関数が戻った際に解放されてしまいます。