Standard C Library Functions¶
Functions from the C language specification.
malloc¶
Creates a fresh allocation on the heap. The Grackle allocator always succeeds, returning a non-null pointer.
void* malloc( size_t size )
malloc allocates an object of size bytes in the heap and
returns a pointer to he beginning of the object. In all cases,
malloc will succeed and return an non-null pointer distinct from
all previously-returned pointers. In the special case that 0 bytes
are requested, a valid non-null pointer is nonetheless returned; but this
pointer must not be used to read or write memory.
The size argument to malloc may be a symbolic value.
calloc¶
Create a fresh allocation on the heap and set every byte in the object
to the 0 value. Except as explicitly listed below, calloc
will always succeed, returning a non-null pointer.
void* calloc( size_t count, size_t size )
calloc function contiguously allocates enough space for count
objects that are size bytes of memory each and
returns a pointer to the allocated memory.
The allocated memory is filled with bytes of value zero.
calloc will fail if the multiplication of count with size overflows.
If either count or size is zero, the result is identical to
calling malloc with size 0. Similar to memset, the arguments
to calloc must be concrete; symbolic arguments will cause the call
to fail.
free¶
Deallocate memory previously allocated by malloc or calloc.
void free( void* ptr )
free deallocates heap objects obtained from malloc or
calloc. This function succeeds and does nothing if passed
the null pointer. Otherwise, the argument must be a live (i.e., not
previously deallocated) pointer equal to the return value of a
previous call to malloc or calloc.
memset¶
Fill a region of memory with a constant byte value.
void* memset( void* b, int c, size_t len )
memset writes len bytes of value c (converted to an
unsigned char) to the string b. NOTE that the len
argument cannot be a symbolic value, although the b and c
may be symbolic. This call will fail if any byte
in the indicated range falls outside the allocation to which b belongs.
The return value is the first argument, b.
memcpy¶
Copy a region of memory to another disjoint region of memory.
void* memcpy( void* dst, void* src, size_t n )
Copy n bytes from the region pointed to by src into the
region pointed to by src. These two regions are required to be
disjoint; otherwise this call will fail. The return value of this
function is the first argument dst.
All arguments to this function may be symbolic.
memmove¶
Copy a region of memory to another, possibly overlapping, region of memory.
void* memmove( void* dst, void* src, size_t n )
Copy n bytes from the region pointed to by src into the
region pointed to by src. These two regions are allowed to
overlap; in which case the behavior is equivalent to first copying
from src to a disjoint temporary buffer and then copying this
buffer into dst. The return value of this function
is the first argument, dst.
All arguments to this function may be symbolic.
printf¶
Format output and print it on the standard output stream.
int printf( const char* format, ... )
Format the given arguments according to the format string and
print the result on standard out. Our printf is a reasonably
complete implementation of the C standard printf (caveats below);
see the standard man page for printf for details. The
return value of printf is the number characters printed.
The following features are not currently supported:
- The
aandAfloating-point conversions. - The wide character/string conversions,
%lcand%ls. - The
*and*m$precision specifiers that read precision from an argument. - Any locale-specific behavior.
Note that the format string and any strings printed using a %s
conversion are required to be concrete. Symbolic integers and
floating-point values will simply be formatted as a sequence of ‘?’
symbols.