【问题标题】:GNU Guile SCM to char*GNU Guile SCM 到 char*
【发布时间】:2013-04-16 12:29:26
【问题描述】:

我对 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);
}

问题是任何对转换函数的调用都可能引发错误,从而导致内存泄漏。 我该怎么办?

【问题讨论】:

    标签: memory scheme gnu guile


    【解决方案1】:

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

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

    编辑:

    我猜你的意思是c端有哪些异常处理方法,我认为手册中关于用C编程的两个部分之一中可能有一些内容。

    【讨论】:

      猜你喜欢
      • 2016-10-12
      • 2018-05-28
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2016-08-14
      • 2018-08-04
      • 2020-03-19
      • 2018-05-27
      相关资源
      最近更新 更多