2

プロセスpidをconstchar*に変換したいのですが、以下は機能しません。

            std::ostringstream str_pid;
        str_pid << getpid();
        const char * cstr_pid = str_pid.str().c_str();

ほとんどの場合は機能しますが、誤った結果になる場合があります。どうやら私は何か間違ったことをしているようです。何か案が?

4

1 に答える 1

5

cstr_pidstd::stringによって返される一時的なものstr_pid.str()は、の割り当て後に破棄されるため、ダングリングポインタになりますcstr_pidstr_pid.str()戻り値のコピーを作成します。

const std::string my_pid(str_pid.str());

その後、必要なmy_pid.c_str()ときに使用しconst char*ます。

于 2012-07-19T14:57:48.120 に答える