Memory GNU Guile SCM到char*
我对FFI和GNU Guile比较陌生,我正在编写一个大量使用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",
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编程的两个部分中的一个部分可能会有关于这方面的内容