Difference between revisions of "Stack"
From Mesham
Jump to navigationJump to searchm |
m (5 revisions imported) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
== Example == | == Example == | ||
− | var i:Int :: allocated[stack]; | + | function void main() { |
+ | var i:Int :: allocated[stack]; | ||
+ | }; | ||
In this example variable ''i'' is declared as an integer and allocated to all processes (by default) and also on the stack frame of the current function. Note how we have omitted the optional braces to the ''stack'' type as there are no arguments. | In this example variable ''i'' is declared as an integer and allocated to all processes (by default) and also on the stack frame of the current function. Note how we have omitted the optional braces to the ''stack'' type as there are no arguments. | ||
+ | |||
+ | ''Since: Version 1.0'' | ||
== Default allocation strategies == | == Default allocation strategies == |
Latest revision as of 15:44, 15 April 2019
Syntax
stack[]
Semantics
Instructs the environment to bind the associated variable to stack frame memory which exists for a specific function only whilst it is alive. Once the corresponding function has returned then the memory is freed and hence this variable ceases to exist.
Note: This type, used for function parameters or return type instructs pass by value
Example
function void main() { var i:Int :: allocated[stack]; };
In this example variable i is declared as an integer and allocated to all processes (by default) and also on the stack frame of the current function. Note how we have omitted the optional braces to the stack type as there are no arguments.
Since: Version 1.0
Default allocation strategies
Type | Default allocation strategy |
---|---|
All element types | Stack |
Array | Heap |
Record | Stack |
Reference record | Heap |