使用 StringValueCStr 后内存是否释放?

Is memory freed after using StringValueCStr?

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

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

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

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