【问题标题】:Is memory freed after using StringValueCStr?使用 StringValueCStr 后是否释放内存?
【发布时间】:2019-05-08 11:50:51
【问题描述】:

我使用 StringValueCStr 将 ruby​​ String 转换为 char*。当不再需要这个新的 C 字符串时,我是否需要释放内存?

如果这个新的 C 字符串被自动释放,这是否意味着如果我打算将它保存在我的 C 结构中以供以后使用,我应该复制它?

【问题讨论】:

    标签: c ruby ruby-c-extension


    【解决方案1】:

    StringValueCStr 返回与StringValuePtr 相同的指针——这是对象的内部字符串缓冲区。

    该缓冲区可能会因 String 实例的任何后续突变(或者,当然,垃圾回收)而更改或失效,所以是的,如果需要保留它,您应该复制它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 2011-04-30
      • 1970-01-01
      相关资源
      最近更新 更多