使用StringValueCStr后是否释放了内存?

时间:2019-05-08 11:50:51

标签: c ruby ruby-c-extension

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

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

1 个答案:

答案 0 :(得分:1)

output = np.random.uniform(-1, 1, (4, 1)).ravel() sorted_weigths = np.sort(abs(output)) sorted_indices = np.argsort(sorted_weigths) output[np.argsort(np.sort(abs(output)))] 返回与StringValueCStr相同的指针,它是对象的内部字符串缓冲区。

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