Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> especially on the memory management side.

Libc string functions don't manage memory. They can be used no matter where your strings are stored. It is more of a choice between generality vs convenience in common cases.



I think this is the main culprit of the libc string functions, you have to provide buffers to store results, and the responsibility of managing those individually can be annoying, and bug prone, resulting in vulnerabilities.

Passing an allocator (like Zig) or a container (like in my framework) to anything that needs to allocate some memory to store a result is both explicit, low overhead and quite convenient in practice.


Note that they're annoying, bug prone, and vulnerable in 3rd-party memory managed libraries, too, but you can just say it's someone else's problem then.


A lot of them require the string to be null terminated rather than taking a length.


You cannot e.g. store a string as a slice of another string (unless the slice reaches the end).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: