It probably is a noob question, but aren't array lengths just hidden size_t values that are passed around? Why do we need to allocate space for them, too? voif foo() { size_t length; char* ptr; //allocated memory of 2^n //.. the same as..? char[] data; }