title: calculating inverse matrix using lapack
body: <p>I want to calculate inversion of a complex matrix. It occurs to me
  that lapack contains many routines related to algebraic calculation,
  so I found the subroutine ZGETRI. Unexpectedly, after compiling the 
  following code with "ifort -o out -heap-arrays test.f90 -mkl" and
  running the file "out", I got an error </p>
  
  <p>"<strong><em>glibc detected</em></strong>./out:free():invalid pointer: 0x00007fee68f76010***"</p>
  
  <p>followed by memory map and finally "aborted(core dumped)".
  This is very strange to me and I have no idea where the mistake is.
  By the way, when some errors emerge not in the compiling process but
  the running process, is there any way to detect where this error is
  from? </p>
  
  <pre><code>program test
  Implicit none
  integer,parameter::M=300   
  complex*16,allocatable,dimension(:,:)::A
  complex*16,allocatable,dimension(:)::WORK
  integer,allocatable,dimension(:)::IPIV
  integer i,j,info,error
  
  allocate(A(M,M),WORK(M),IPIV(M),stat=error)
  if (error.ne.0)then
    print *,"error:not enough memory"
    stop
  end if
  
  !definition of the test matrix A
   do i=1,M
     do j=1,M
        if(j.eq.i)then
           A(i,j)=(1,0)
        else 
           A(i,j)=0
        end if
     end do
   end do  
  
  call ZGETRI(M,A,M,IPIV,WORK,M,info)
  if(info .eq. 0) then
    write(*,*)"succeded"
  else
   write(*,*)"failed"
  end if
  deallocate(A,IPIV,WORK,stat=error)
  if (error.ne.0)then
    print *,"error:fail to release"
    stop
  end if      
  end 
  </code></pre>