A pointer declared to be OWN retains its value when the program exits the block in which the pointer is declared, and that value is again available when the program reenters the block in which the pointer is declared.
OWN pointers can be assigned only to global arrays or OWN arrays declared within the scope of the pointer. This restriction applies because the pointer is not deallocated when the block in which it is declared is exited. If an OWN pointer were assigned to a local array, then when the block in which the pointer is declared is reentered, the pointer could contain a reference to an array that has been deallocated.

