Золотое правило заключается в том, что вы должны вызывать delete один раз за каждый вызов, который вы вызывали new. Если вы вызываете new только один раз для создания массива, вам нужно вызвать delete только один раз, чтобы уничтожить его.
Если вы вызываете новый элемент, прежде чем добавить его в список, и забываете об элементе, который вы должны вызвать, удалите его и в деструкторе.
Выше вы инициализируете массив указателей, и только 4 байта на указатель будут освобождены правильно.
Обычно я отслеживаю ответственность каждого элемента в своем коде. Если вы добавляете элемент в список, берет ли список ответственность за этот объект на себя? Если у вас есть что-то вроде нового элемента, добавьте его в список и уничтожьте указатель на новый объект, оставив только список со ссылкой на него, тогда список должен взять на себя ответственность за очистку памяти, и ему придется повторяйте предметы и освобождайте их один за другим.