Actual source code: ex10.c

  1: /* 
  2:    Tests PetscMemmove()
  3: */

 5:  #include petscsys.h

  9: int main(int argc,char **argv)
 10: {
 11:   int i,*a,*b,ierr;
 12:   PetscInitialize(&argc,&argv,(char *)0,0);

 14:   PetscMalloc(10*sizeof(int),&a);
 15:   PetscMalloc(20*sizeof(int),&b);

 17:   /*
 18:       Nonoverlapping regions
 19:   */
 20:   for (i=0; i<20; i++) b[i] = i;
 21:   PetscMemmove(a,b,10*sizeof(int));
 22:   PetscIntView(10,a,0);

 24:   PetscFree(a);

 26:   /*
 27:      |        |                |       |
 28:      b        a               b+15    b+20
 29:                               a+10    a+15
 30:   */
 31:   a = b + 5;
 32:   PetscMemmove(a,b,15*sizeof(int));
 33:   PetscIntView(15,a,0);
 34:   PetscFree(b);

 36:   /*
 37:      |       |                    |       |
 38:      a       b                   a+20   a+25
 39:                                         b+20
 40:   */
 41:   PetscMalloc(25*sizeof(int),&a);
 42:   b = a + 5;
 43:   for (i=0; i<20; i++) b[i] = i;
 44:   PetscMemmove(a,b,20*sizeof(int));
 45:   PetscIntView(20,a,0);
 46:   PetscFree(a);

 48:   PetscFinalize();
 49:   return 0;
 50: }
 51: