array allocation