feat(string): complete string.h + strdup/memccpy

This commit is contained in:
2026-09-03 20:05:49 -04:00
parent 20f514d91c
commit 06d2ec7c34
19 changed files with 1860 additions and 2 deletions
+30
View File
@@ -0,0 +1,30 @@
#ifndef VLIBC_INTERNAL_MALLOC_H
#define VLIBC_INTERNAL_MALLOC_H
/*
* vlibc — internal allocator seam (todo 8).
*
* The allocator todo (#7) owns the real implementation and provides these
* entry points; library code that must allocate (strdup, strndup, and later
* stdio/regex/...) calls them instead of the public malloc/free so that the
* allocator remains the single allocation implementation. The public
* malloc/free/calloc/realloc of todo 7 must be backed by the same allocator,
* so a block returned by __libc_malloc can be released with public free.
*
* - __libc_malloc(n): allocate n bytes, 16-byte aligned; NULL + errno ENOMEM
* on failure. May return a unique pointer even when n == 0.
* - __libc_free(p): release a block returned by __libc_malloc; NULL is a
* no-op.
*/
#include <stddef.h>
#include "libc.h"
hidden void *
__libc_malloc(size_t n); // NOLINT(bugprone-reserved-identifier)
hidden void
__libc_free(void *p); // NOLINT(bugprone-reserved-identifier)
#endif /* VLIBC_INTERNAL_MALLOC_H */