4 ms·
> 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
by attractivechaos 4y ago
> 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.
- nicoburns 4y agoA lot of them require the string to be null terminated rather than taking a length.
- stephc_int13 4y agoI 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.
- bandrami 4y agoNote 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.
- skitter 4y agoYou cannot e.g. store a string as a slice of another string (unless the slice reaches the end).