GNU Guile SCM到char *

时间:2013-04-16 12:29:26

标签: 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", ...)
{
  ...
  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);
}

问题是任何对转换函数的调用都会抛出错误,让我有内存泄漏。 我该怎么办呢?

1 个答案:

答案 0 :(得分:0)

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

void scm_to_ascii_string(SCM string,char *& out);

编辑:

我想你的意思是c方面有什么异常处理程序方法,我认为在C中编程内容的两个部分之一的手册中可能会有一些内容。