Free

From Bennu Wiki
Revision as of 08:35, 17 July 2012 by 188.106.184.91 (talk)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


Definition

INT free ( <VOID POINTER data> )

Frees a block of memory.

The pointer used must be a pointer to a previously allocated block of memory, else the behavior of free() is undefined.

Also called mem_free().

Parameters

VOID POINTER data - Pointer to the block of memory to be freed.

Returns

INT : true

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()Calloc()Free()Mem_alloc()Mem_available()Mem_calloc()Mem_cmp()Mem_copy()Mem_free()Mem_move()Mem_realloc()Mem_set()Mem_seti()Mem_setw()Mem_total()Memcmp()Memcopy()Memmove()Memory_free()Memory_total()Memset()Memseti()Memsetw()Realloc()