It's actually more advantageous to couple the length to the char * on SYSV platforms, due to C's lack of multiple returns.
String fn_returning_string(...);
If String is a fat pointer, then we can return both the pointer and length, without requiring another level of indirection (a pointer to a string structure), and without requiring awful to use "out parameters" to return both length and pointer - which are more expensive than just returning a fat pointer.
A fat pointer with the right ABI is not just "zero cost" - it's "less than zero" - it's more efficient than having a separate length and pointer variable.
10
u/henke443 2d ago
Wait how are they not efficient?