[comp.sys.sun] Apparent problem with malloc

jim@doctor.chem.yale.edu (James F. Blake) (10/08/90)

I want to use malloc for a two dimensional array, but I'm getting strange
results.  The following test program illustrates the problem.

      program test
      pointer (p,v(1,1))
      integer i, j, k
      real v

      p = malloc(1000)
      k = 0
      do i = 1, 2
         do j = 1, 3
            k = k + 1
            v(i,j) = k 
         enddo
      enddo
      do i = 1, 2
         do j = 1, 3
            write(*,*) i, j, v(i,j)
         enddo
      enddo
      call free(p)
      stop
      end

This code produces the following output from FORTRAN 1.3 and SunOS4.0.3 on
a Sparcstation I.

  1  1    1.00000
  1  2    4.00000
  1  3    5.00000
  2  1    4.00000
  2  2    5.00000
  2  3    6.00000

If I allocate the memory and then pass the array (v) to a subroutine, all
seems to work fine.  Any help would be greatly appreciated.

  Jim

bliss@sp64.csrd.uiuc.edu (Brian Bliss) (10/27/90)

>       pointer (p,v(1,1))

try 	pointer (p,v(10,10))


if v is dimensioned to v(1,*), then v(1,3) is the same memory location as
v(2,2), and v(1,2) is the same memory location as v(2,1), when not
checking for dimension bound overflow.  Not that i've ever seen or used
the FORTRAN pointer construct.

bb