I am fairly sure that an array created like that int* arr = newint[3]is dynamically allocated.
(An array like this int arr[3]; isn't.)
I also think that delete [] arr is the correct way to deallocate an array.
EDIT: lordmat, I may be wrong, but I'm not sure your loop will work. array[i] is an element of the array, i.e. an integer and not a pointer so you cannot delete it. Also, when I tried delete &array[0] this resulted in an error.
genesys, I copied and pasted your code into Visual Studio 2010 and it ran fine. All three array values after deletion were random values.
What do you mean by "clearing" the array? delete doesn't set memory to any value, just releases it for reallocation.Maybe the values will change quickly, maybe they will hang around for ages. There's no promise made about what happens to the memory, only that you can't trust it not to have changed (hence the recommendation against reading for memory that you have deleted, although you sometimes see people doing it anyway).
Moschops, in that case, what causes the change of values in this program? When I tried this, I didn't declare any other variables, so what changes the memory in the mean time? Is it cout? Or could it be something outside our program which reused the memory?