Vely logo install
examples
documentation

Vely 15.2.0 released on Jan 18, 2023
Articles updated Jan 17, 2023

new-mem


Issues with this documentation page? Report here.

Purpose:


Allocate memory.

Syntax:



new-mem [ define ] <memory> size <size> \
    [ block-size <block size> ] \
    [ init ]


Description:


new-mem allocates <memory> of <size> blocks, each block of <block size> bytes as specified in "block-size" clause, thus allocating <size>*<block size> bytes aligned suitably for any pointer type. By default, block size is 1, which means in that case <size> is the number of bytes. <memory> is allocated memory.

When "init" is used, the memory is zero-initialized. If you need the memory initialized, always use "init" as it is generally faster than creating memory and then initializing it (for instance with "memset()").

If "define" is used, variable <memory> is created if it does not exist. The pointer returned is always "void*" and can be used for any purpose; always cast it to your desired type.

If an existing pointer is used (i.e. without "define"), then such pointer can be of any type.

Examples:


Allocate memory of 300 bytes, producing a "void *". Then the data is copied into it - note the casting to "char*";

new-mem define mystr size 300
strcpy ((char*)mystr, "Some string");

Initialize memory of 1000 bytes (filled with all zeroes):

new-mem define mymem size 1000 init

Allocate an array of 1000 integers:

int *mymem;
new-mem mymem size 1000 block-size sizeof(int)

Allocate an array of 1000 integers initialized to 0 and then a single element of the array is assigned a value:

int *mymem;
new-mem mymem size 1000 block-size sizeof(int) init
mymem[50] = 23;

The memory can be created as "void *" and then assigned to any type:

new-mem define mymem size 1000 block-size sizeof(int) init
int *newmem = (int*)mymem;


See also:


Memory ( delete-mem   memory_handling   new-mem   resize-mem  )  SEE ALL (documentation)



Copyright (c) 2022 DaSoftver LLC. Vely is a trademark of Dasoftver LLC. The software and information herein are provided "AS IS" and without any warranties or guarantees of any kind. Vely elephant logo (c) 2022 DaSoftver LLC. This web page is licensed under CC-BY-SA-4.0.