Comment on Never create Ruby strings longer than 23 charactersparentComments−ori_b14yYou can allocate the string with one malloc: RString *s = malloc(sizeof(RString) + length); /* allocate 'length' bytes extra memory past the end of 's' */ s->data = s + 1; /* to the extra memory past the start of the string struct */−teaspoon14yRuby strings are mutable, so you need to be able to free s->data without freeing the RString itself.−ori_b14y s = realloc(s, sizeof(RString));−charliesome14yMRI objects are not relocatable so that won't work if realloc has to move the structure in memory−dchest14yNitpick: sizeof(RString) + length may overflow size_t.
Comments
You can allocate the string with one malloc:
Ruby strings are mutable, so you need to be able to free s->data without freeing the RString itself.
MRI objects are not relocatable so that won't work if realloc has to move the structure in memory
Nitpick: sizeof(RString) + length may overflow size_t.