Can you please tell me under what circumstances DEALLOCATE can cause segmentation fault error? I was developing a program which simulate set operation. Since the size of set will be relatively small, I have decided to use pointer with allocate instead of linked list. But, in the following code, the statement 2 is causing segmentation fault error which I couldn't understand why. If 2 is causing segmentation fault error, why not the statement 1? integer,dimension(:),pointer :: oldset, newset allocate(oldset(1)) oldset(1) = 1 do,... <===== Go through lists of elem. if we have to add elem to the newset, call putElement(newset,oldset,elem) print *, oldset <====== 1 deallocate(oldset,stat=error) <====== 2 if ( error /= 0 ) then print *,"Dealloc Error" stop end if oldset=>newset nullify(newset) end do The newset is allocated inside putElement() routine. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%