Можно попробовать не смешивать уровень языка (оператор NEW) и прикладной уровень (инициализация массива указателей).

Пусть на уровне языка NEW возвращает NIL, если не может выделить память. Тогда выделение массива указателей либо сработает, либо нет. Если не сработало, NEW вернёт NIL вместо массива. Если сработало, будет массив, заполненный NIL вместо указателей на строки.

Далее прикладной уровень в цикле может заполнять массив, вызывая NEW для каждого элемента. Как только очередной элемент не удалось создать (NEW вернул NIL), цикл можно преждевременно прерывать. Далее по обстоятельствам: либо зачистить уже выделенные элементы массива, либо удалить ссылку на сам массив, поскольку не удалось его полностью проинициализировать (по принципу "всё либо ничего").