Если вы выполняете функцию del
на ifoo_version_42
, то блок памяти, на который указывает data
, не будет освобожден; ни delete
, ни delete[]
не работают рекурсивно.
delete[]
предназначен для освобождения arrays
; то есть, если вы присвоили imageData
с new[]
, то он должен быть освобожден с помощью delete[]
.
delete
предназначен для освобождения отдельных объектов: если вы, например, выделил ifoo_version_42
с new
, затем вы должны освободить его с delete
.
(Кроме того, никогда не используйте delete
для чего-то, выделенного с malloc()
, или free()
с чем-то, выделенного с new
.)
Еще одно предложение: Изучите идиому RAII и используйте классы интеллектуальных указателей, предоставляемые библиотеками STL или Boost; это поможет вам правильно управлять памятью.