Освобождается ли память после использования StringValueCStr? - PullRequest
0 голосов
/ 08 мая 2019

Я использую StringValueCStr для преобразования ruby ​​String в char *. Нужно ли освобождать память, когда эта новая строка C больше не нужна?

Если эта новая строка C освобождается автоматически, значит ли это, что я должен скопировать ее, если планирую сохранить ее в своих структурах C для дальнейшего использования?

1 Ответ

1 голос
/ 08 мая 2019

StringValueCStr возвращает тот же указатель, что и StringValuePtr - это внутренний строковый буфер объекта.

Этот буфер может измениться или стать недействительным в результате любой последующей мутации экземпляра String (или, конечно, сборки мусора), так что да, вы должны скопировать его, если вам нужно его сохранить.

...