2013-04-16 39 views
2

我是FFI和GNU Guile的新手,我正在编写绑定到大量使用char*变量的库。这里是函数代码,包装C函数:GNU Guile SCM to char *

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

你可以使输出部分的参数如:

无效scm_to_ascii_string(SCM串字符* &出);

编辑:

我猜你的意思处理方法是什么例外,那里的C面,我觉得可能是在编程的东西两个部分的一个东西上,该手册中C.