我对 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);
}
问题是任何对转换函数的调用都可能引发错误,从而导致内存泄漏。我能做些什么呢?