Using delete on new[] is undefined, but that doesn't mean it won't work. It may or may not work, so it's not really a good demonstration of destructors firing or not. You may get different results depending on compiler and platform.
Yes, it's undefined behavior, I know. My point was not to show what will happen with destructors, but what might happen.
On my system for example delete on new[]ed array will fire just one destructor, and free won't fire any.
If you want people to help you, try to provide Short, Self Contained, Correct (Compilable), Example, and Don't be a Help Vampire!
C++ Super-FAQ - CppCon videos - C++14 latest draft (n3797) - C11 latest draft (n1570)
Boost - GCC 6.1.0 - Clang - GDB tutorial - Valgrind - Programming in 21 days