Dynamic Allocation Example

void ** array;
unsigned int size;

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

    if (offset >= size) {
        if (NULL == (new_array = (void *)malloc(sizeof(void *) * (offset + 1))))
 {
            return(-1);
        }
        if (array) {
            for (i = 0; i < size; i++) {
                new_array[i] = array[i];
            }
            free(array);
            array = new_array;
        }
    }
    array[offset] = element;
    return(0); 
}
next slide