Avoiding malloc for Small Strings in C With Variable Length Arrays (VLAs)
Many C programs allocate small temporary buffers using malloc(), even when the buffer only lives for the duration of a function call. In many cases, stack allocation using VLAs can be significantly...

Source: DEV Community
Many C programs allocate small temporary buffers using malloc(), even when the buffer only lives for the duration of a function call. In many cases, stack allocation using VLAs can be significantly faster because it avoids allocator overhead and improves cache locality. I wrote a deeper analysis including benchmarks and practical guidelines. Full article (Medium — no paywall): Using VLA for Faster Temporary Strings in C The article proposes conditional logic: use a VLA when the requested size safely fits on the stack, and fall back to malloc() otherwise. Small macros hide the decision so the code remains compact and readable. static void test1(bool show, const char *s1, const char *s2) { // Create char *result - pointing to heap/stack FLEX_STR_INIT(result, strlen(s1) + strlen(s2) + 1); // Use the buffer concat(FLEX_STR_BUF(result), s1, s2)) ; printf("result(%zu)=%s\n", FLEX_STR_SIZE(result), result); // Release buffer (NOOP is VLA was used) FLEX_STR_FREE(result); } For small strings th