私は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);
}
問題は、変換関数を呼び出すとエラーが発生し、メモリ リークが発生することです。私はそれについて何ができますか?