Memory GNU Guile SCM到char*

Memory GNU Guile SCM到char*,memory,scheme,gnu,guile,Memory,Scheme,Gnu,Guile,我对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",

我对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);
}
问题是,对转换函数的任何调用都可能抛出错误,给我留下内存泄漏。
对此我能做些什么?

您可以将输出部分设置为参数,例如:

将scm_作废为ascii_字符串(scm字符串、字符*&out)

编辑:

我想你是说c端有什么异常处理程序方法,我想手册中关于c编程的两个部分中的一个部分可能会有关于这方面的内容