From 4dd85fd6ecd9a67e5c2b68380873e6e114714355 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Sat, 17 Oct 2026 05:30:57 +0000 Subject: feat(memory): add tracked MALLOC and FREE builtins Co-Authored-By: Claude Fable 5.1 --- doc/language/function/cpsc-function-free.7.md | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 doc/language/function/cpsc-function-free.7.md (limited to 'doc/language/function/cpsc-function-free.7.md') diff --git a/doc/language/function/cpsc-function-free.7.md b/doc/language/function/cpsc-function-free.7.md new file mode 100644 index 0000000..298199d --- /dev/null +++ b/doc/language/function/cpsc-function-free.7.md @@ -0,0 +1,32 @@ +% CPSC-FUNCTION-FREE(7) + +# NAME + +cpsc-function-free - release an explicit memory allocation + +# SYNOPSIS + +```text +FREE(pointer) +``` + +# DESCRIPTION + +FREE is a compiler extension. Its argument and return type are C void*. Explicitly cast other pointer types to a void* alias before passing them. A null pointer is accepted and returned. A non-null pointer must be the start of an active explicit MALLOC allocation; internal STRING/ARRAY storage, stack addresses, interior addresses and already released allocations are rejected with a source-line diagnostic on stdout and an anonymous exception. + +FREE returns its input address after releasing the allocation. It does not clear the caller's variable. The returned address and all aliases are invalid for memory access. Calling FREE again on that address throws unless a subsequent allocation has reused the address. Tracking cannot distinguish stale aliases once an address is reused. + +The result can be discarded with a standalone call. No user destructor is called. + +# EXAMPLE + +```text +TYPE Raw = C_TYPE("void*") +DECLARE Memory : Raw +Memory <- MALLOC(8) +FREE(Memory) +``` + +# SEE ALSO + +[cpsc-function-malloc(7)](cpsc-function-malloc.7.md), [cpsc-keyword-function(7)](../keyword/cpsc-keyword-function.7.md), [cpsc-keyword-try(7)](../keyword/cpsc-keyword-try.7.md). -- cgit v1.3.1-4-g156e