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语言编程的两个部分之一中可能有一些内容。

于 2013-05-14T17:04:57.650 回答