Memory management
Memory management is a way to manage the memory of your program. Sacalon use manual memory management because it is used in most performance-critical applications like games,OSes, embedded systems, etc.
Sacalon uses new and delete keywords to manage memory manually.
Allocation
For allocating memory, you should use the new keyword. Note that type of the allocated memory should be pointer or reference type and passed type to new keyword should be a
var foo : int^ = new int(1) // allocating
For easily declaring and allocating memory, use var <name> = new <type>(<args...>) statement, like this:
var foo = new int(1)
Reallocation
For reallocating memory and assigning the new value to the pointer, use <pointer> = new <type>(<args...>) statement, like this:
var foo : int^ = new int(1) // allocate memory
foo = new int(2) // reallocate memory and assign new value
Deallocation
For deallocating memory, you should use the delete keyword and pass the pointer to the memory that you want to deallocate:
delete foo
Accessing memory
Like pointer types, you can access the allocated memory value with the ^ operator:
var foo : int^ = new int(1)
print(^foo)
Critical notes
- Don't forget to use the
deletekeyword at end of scope and before the end of the program..
In future, we will add a feature to show warnings when you forget to use the
deletekeyword.
-
You can't deallocate memory that you haven't allocated it without
newkeyword. -
You can allocate, not allocated pointers:
var foo : int^?
foo = new int(1)