Если вы можете охарактеризовать максимальный объем памяти, необходимый для набора этих массивов, который будет использоваться для любого конкретного «кадра» (что бы это ни было), и если вы будете иметь дело только с одним кадром за раз (другими словами, вы будете выполнять работу с одним набором массивов, а затем выгрузить все эти массивы перед выполнением следующего цикла работы с другим набором массивов), а затем, скорее всего, вы добьетесь максимальной производительности, выделив свои массивы изблок статической памяти, размер которого соответствует вашему максимально возможному рабочему набору.
Тогда выделение массива может быть простым распределителем пула, который выделяет память для массива в передней части блока и регулирует блокуказатель на только что прошедшее выделение, чтобы быть готовым к следующему выделению массива.Когда вы закончите работу с этим набором массивов, все можно освободить, «очистив пул» - просто сбросив указатель блока на начало статического пула памяти.
Конечно, поскольку выне дало много подробностей о том, как должна выполняться ваша работа, эта техника может вообще не подходить (возможно, поэтому вы еще не нашли окончательного ответа - такой ответ зависит от конкретных характеристик работыты выступаешь).