- This wiki is out of date, use the continuation of this wiki instead
Alloc
From FenixWiki
(Difference between revisions)
Revision as of 14:27, 19 April 2007 (edit) Sandman (Talk | contribs) m (category) ← Previous diff |
Current revision (12:46, 29 April 2008) (edit) (undo) Sandman (Talk | contribs) m |
||
(3 intermediate revisions not shown.) | |||
Line 3: | Line 3: | ||
==Definition== | ==Definition== | ||
- | ''' | + | '''VOID POINTER''' alloc ( <'''INT''' size> ) |
- | Allocates a block of memory of a certain size. | + | Allocates a [[memoryblock|block of memory]] of a certain size. |
== Parameters == | == Parameters == | ||
{| | {| | ||
- | | '''INT''' size || - The size of the to be allocated memory. | + | | '''INT''' size || - The size of the to be allocated memory in [[byte]]s. |
|} | |} | ||
== Returns == | == Returns == | ||
- | ''' | + | '''VOID POINTER''' : Pointer to the first element of the allocated memory block. |
+ | |||
+ | == Errors == | ||
+ | {| | ||
+ | | Insufficient memory || - There is insufficient memory available. This error doesn't occur often. | ||
+ | |} | ||
== Example == | == Example == | ||
Line 20: | Line 25: | ||
Private | Private | ||
byte pointer pbyte; | byte pointer pbyte; | ||
+ | word pointer pword; | ||
int pointer pint; | int pointer pint; | ||
int elements = 10; | int elements = 10; | ||
Line 27: | Line 33: | ||
// Allocate memory | // Allocate memory | ||
pbyte = alloc(elements); | pbyte = alloc(elements); | ||
+ | pword = alloc(elements*sizeof(word)); | ||
pint = alloc(elements*sizeof(int)); | pint = alloc(elements*sizeof(int)); | ||
// Reset memory to 0's | // Reset memory to 0's | ||
- | memset(pbyte,0,elements); | + | memset (pbyte,0,elements); |
- | memset(pint ,0,elements*sizeof(int)); | + | memsetw(pword,0,elements); // same as memset(pword,0,elements*sizeof(word)); |
+ | // because value-parameter is 0. | ||
+ | memset (pint ,0,elements*sizeof(int)); // There isn't a "memseti()", so we need to | ||
+ | // set the individual bytes to 0. To change | ||
+ | // ints to nonzero values, memset() can't be | ||
+ | // used easily | ||
- | // Write numbers to | + | // Write numbers to bytes and ints |
for(i=0; i<elements; i++) | for(i=0; i<elements; i++) | ||
- | pbyte[i] = 133; | + | pbyte[i] = 133; // pbyte[i] is the same as *(pbyte+i) |
- | *(pint+i) = 4555; | + | *(pint+i) = 4555; // pint[i] is the same as *(pint+i) |
end | end | ||
+ | |||
+ | // Write numbers to words | ||
+ | memsetw(pword,345,elements); | ||
// Show numbers | // Show numbers | ||
for(i=0; i<elements; i++) | for(i=0; i<elements; i++) | ||
say("byte["+i+"] = " + *(pbyte+i)); | say("byte["+i+"] = " + *(pbyte+i)); | ||
+ | say("word["+i+"] = " + pword[i]); | ||
say("int ["+i+"] = " + pint[i]); | say("int ["+i+"] = " + pint[i]); | ||
end | end | ||
- | | + | Repeat |
frame; | frame; | ||
- | | + | Until(key(_esc)) |
+ | |||
+ | // Free the used memory | ||
+ | free(pbyte); | ||
+ | free(pword); | ||
+ | free(pint); | ||
+ | |||
End | End | ||
</pre> | </pre> | ||
- | Used in example: [[memset]](), [[ | + | Used in example: [[alloc]](), [[memset]](), [[memsetw]](), [[sizeof]](), [[say]](), [[free]](), [[pointer]] |
+ | |||
+ | {{Funcbox | ||
+ | | category = Memory | ||
+ | }} |
Current revision
Contents |
[edit] Definition
VOID POINTER alloc ( <INT size> )
Allocates a block of memory of a certain size.
[edit] Parameters
INT size | - The size of the to be allocated memory in bytes. |
[edit] Returns
VOID POINTER : Pointer to the first element of the allocated memory block.
[edit] Errors
Insufficient memory | - There is insufficient memory available. This error doesn't occur often. |
[edit] Example
Program example; Private byte pointer pbyte; word pointer pword; int pointer pint; int elements = 10; int i; Begin // Allocate memory pbyte = alloc(elements); pword = alloc(elements*sizeof(word)); pint = alloc(elements*sizeof(int)); // Reset memory to 0's memset (pbyte,0,elements); memsetw(pword,0,elements); // same as memset(pword,0,elements*sizeof(word)); // because value-parameter is 0. memset (pint ,0,elements*sizeof(int)); // There isn't a "memseti()", so we need to // set the individual bytes to 0. To change // ints to nonzero values, memset() can't be // used easily // Write numbers to bytes and ints for(i=0; i<elements; i++) pbyte[i] = 133; // pbyte[i] is the same as *(pbyte+i) *(pint+i) = 4555; // pint[i] is the same as *(pint+i) end // Write numbers to words memsetw(pword,345,elements); // Show numbers for(i=0; i<elements; i++) say("byte["+i+"] = " + *(pbyte+i)); say("word["+i+"] = " + pword[i]); say("int ["+i+"] = " + pint[i]); end Repeat frame; Until(key(_esc)) // Free the used memory free(pbyte); free(pword); free(pint); End
Used in example: alloc(), memset(), memsetw(), sizeof(), say(), free(), pointer
Memory Functions | |
• Alloc() • Free() • Memcmp() • Memcopy() • Memory_free() • Memory_total() • Memset() • Memsetw() • Realloc() • |