我使用StringValueCStr将ruby String转换为char *。当不再需要这个新的C字符串时,我是否需要释放内存?
如果自动释放了这个新的C字符串,这是否意味着如果打算将其保存在C结构中以供以后使用,我应该复制它吗?
答案 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实例的任何后续突变(或者,当然是垃圾回收)而发生更改或无效,因此,是的,如果需要保留它,则应该将其复制。