mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
30 lines
716 B
V
30 lines
716 B
V
[has_globals]
|
|
module builtin
|
|
|
|
// Shitty `sbrk` basic `malloc` and `free` impl
|
|
// TODO: implement pure V `walloc` later
|
|
|
|
__global g_heap_base = usize(__heap_base())
|
|
|
|
// malloc dynamically allocates a `n` bytes block of memory on the heap.
|
|
// malloc returns a `byteptr` pointing to the memory address of the allocated space.
|
|
// unlike the `calloc` family of functions - malloc will not zero the memory block.
|
|
[unsafe]
|
|
pub fn malloc(n isize) &u8 {
|
|
if n <= 0 {
|
|
panic('malloc(n <= 0)')
|
|
}
|
|
|
|
res := g_heap_base
|
|
g_heap_base += usize(n)
|
|
|
|
return &u8(res)
|
|
}
|
|
|
|
// free allows for manually freeing memory allocated at the address `ptr`.
|
|
// currently does not free any memory.
|
|
[unsafe]
|
|
pub fn free(ptr voidptr) {
|
|
_ := ptr
|
|
}
|