The stack and heap are just logical constructs, there is no actual difference between the two as far as the memory subsystem hardware is concerned. Similarly, pointers do not care if the things they point to reside on the stack or on the heap, nor does the CPU when it dereferences the pointer. Behind the scenes, memory is memory, and there is no difference between stack and heap.
So there should be no difference between the two. If you put your array on the stack and keep a pointer to it, then you don't need to pop everything off the stack to get to it.
One thing you do have to be careful of, however, is that when the currently executing method returns to its caller it will automatically pop the stack and remove anything that it put there. So if you want your data to persist across method invocations you pretty much have to use the heap.