Is this type of allocation compile time?

int n;
cin>>n;
int arr[n];

Yes this is compile time allocation.

but this is done during the run time…then how?

Go through the above article.
Memory is allocated in the stack section in this case, so you cannot say that it is a dynamic memory allocation. In Dynamic memory allocation, memory is allocated in the heap memory

ok…in some article i read that the global variable is declared in heap memory…so would we call that global variable as dynamic memeory allocation

Refer this