2

私はFFIとGNU Guileに比較的慣れていないので、char*変数を多用するライブラリへのバインディングを書いています。C関数をラップする関数からのコードは次のとおりです。

static inline char*
scm_to_ascii_string(SCM string)
{
  return SCM_UNBNDP(SCM) ?  NULL
    : scm_to_stringn(string, NULL, "ascii", SCM_FAILED_CONVERSION_ERROR);
}

SCM_DEFINE(func, "func", ...)
{
  ...
  char *server_pass = scm_to_ascii_string(scm_server_pass);
  char *username = scm_to_ascii_string(scm_username);
  char *realname = scm_to_ascii_string(scm_realname);
}

問題は、変換関数を呼び出すとエラーが発生し、メモリ リークが発生することです。私はそれについて何ができますか?

4

1 に答える 1

0

出力部分を引数にすることができます。

void scm_to_ascii_string(SCM 文字列, char* &out);

編集:

私はあなたがc側にある例外ハンドラーメソッドを意味していたと思います.Cでのプログラミングに関する2つのセクションのいずれかで、マニュアルに何かがあると思います.

于 2013-05-14T17:04:57.650 に答える