if array of alocated memory locations is delited by delete p;
what will happen if I insted write delete p; like for single elements?
This doesn't quite make sense to me. If something allocated thusly: p = new P and is then deleted like so: delete p instead of delete  p your code invokes undefined behavior, and anything can happen, including your program working normally or a pink elephant materializing above your head and crushing you to death when it falls.
do I have to specify the lenght like delete p; ?