我是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);
}
问题是任何对转换函数的调用都会抛出错误,让我有内存泄漏。 我该怎么办呢?
答案 0 :(得分:0)
您可以将输出部分作为参数,例如:
void scm_to_ascii_string(SCM string,char *& out);
编辑:
我想你的意思是c方面有什么异常处理程序方法,我认为在C中编程内容的两个部分之一的手册中可能会有一些内容。