ホームページ  >  記事  >  バックエンド開発  >  Go: CString を返すときにメモリ リークを処理するにはどうすればよいですか?

Go: CString を返すときにメモリ リークを処理するにはどうすればよいですか?

王林
王林転載
2024-02-13 10:00:10985ブラウズ

Go:返回 CString 时如何处理内存泄漏?

php エディター Xigua は、Go 言語で CString を返すときのメモリ リークの問題の解決策を共有します。 Go では、C 文字列は null で終わるバイト配列ですが、Go 文字列は長さの接頭辞が付いているバイト配列です。 Go 文字列を C 文字列に変換し、またその逆に変換する必要がある場合は、メモリ リークを避けるためにメモリの割り当てと解放に注意を払う必要があります。この記事では、この一般的な問題の解決に役立つ、メモリ リークに対処するいくつかの方法を紹介します。

質問の内容

次の関数シグネチャがあり、json 文字列を返します。 リーリー

次に、Python で go コードを呼び出します

リーリー

Python側では問題なく動作するのですが、Python側でループ内で関数を呼び出す際のメモリリークが心配です。

メモリリークにどう対処するか?メモリリークを避けるために、

cstring の代わりに bytes を返し、Python 側でバイトを処理する必要がありますか?それを処理するためのこのリンクを見つけましたが、どういうわけか、マーシャリング後に返される JSON 文字列のサイズがわかりません。

回避策

Python は次のようになります:

リーリー

go は次のようになります:

リーリー

そして、次のコマンドラインを使用して共有ライブラリを生成します:

リーリー リーリー リーリー

以上がGo: CString を返すときにメモリ リークを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。