Prior to the C99 standard, variable-sized arrays were a common example of this . ( See the article on malloc for an example of dynamically allocated arrays . ) Unlike automatic allocation, which can fail at run time with uncontrolled consequences, the dynamic allocation functions return an indication ( in the form of a null pointer value ) when the required storage cannot be allocated . ( Static allocation that is too large is usually detected by the loader, before the program can even begin execution .)