ホームページ > バックエンド開発 > C++ > 割り当てられたメモリを保持しながら char を wchar_t に安全に変換するにはどうすればよいですか?

割り当てられたメモリを保持しながら char を wchar_t に安全に変換するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-29 15:31:02
オリジナル
356 人が閲覧しました

How to Safely Convert char to wchar_t While Preserving Allocated Memory?

char を wchar_t に変換する際のメモリの保持

文字配列を ASCII から Unicode に変換すると、割り当てられたメモリを保持するという課題が発生しますメモリ。試みられた解決策は次のようになります。

<code class="cpp">const wchar_t *GetWC(const char *c) {
    const size_t cSize = strlen(c)+1;
    wchar_t wc[cSize];
    mbstowcs(wc, c, cSize);

    return wc;
}</code>
ログイン後にコピー

ただし、このアプローチは、wc のローカル定義のため不十分であり、関数呼び出しの最後に割り当てが解除され、未定義の動作が発生します。

この落とし穴を回避するには、簡単な変更が必要です。

<code class="cpp">const wchar_t *GetWC(const char *c) {
    const size_t cSize = strlen(c)+1;
    wchar_t* wc = new wchar_t[cSize];
    mbstowcs(wc, c, cSize);

    return wc;
}</code>
ログイン後にコピー

この調整されたコードでは、wc は new を使用して動的に割り当てられ、関数呼び出しを超えた永続性が保証されます。したがって、メモリ リークを防ぐために、割り当てられたメモリの割り当てを解除するのは呼び出しコードの責任になります。

以上が割り当てられたメモリを保持しながら char を wchar_t に安全に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート