No loop is required to allocate a block of memory.

iPtr = (int *) malloc (64 * sizeof (int)); will allocate a block of 64 integers, regardless of their size on the system in question.

Since there are typically 16 or more bytes of memory overhead to manage a malloc'd block, it is inadvisable to allocate dynamic memory in small chunks.