Dynamic Allocation Example

void ** array;
unsigned int size = 0;

int add_element(void * element, unsigned int offset)
{
    unsigned int i;
    void ** new_array;

    if (offset >= size) {
	new_array = (void *)malloc(sizeof(void *) * (offset + 1))))
        if (NULL == new_array) {
            return(-1);
        }

	for (i = 0; i < (offset + 1); i++) {
	    new_array[i] = NULL;
	}

        if (array) {
            for (i = 0; i < size; i++) {
                new_array[i] = array[i];
            }
        }

	size = offset + 1;
        free(array);
        array = new_array;
    }
    array[offset] = element;
    return(0); 
}
next slide