On Aug 18, 2011, at 5:02 PM, Alan Wei wrote:

> Dear all,
>     I hope you're having a nice day.
>     I'm trying to get the x, y-value of a coordinate created by DMDACreate2d. 
> Lines I wrote down are:
> 
>   DMDAGetCoordinateDA(da, &cda);
>   DMDAGetGhostedCoordinates(da, &gc);
>   DMDAVecGetArray(cda, gc, &coors);
> 
>   for (i = xs; i < xs+xm; i++) {
>     for (j = ys; j < ys+ym; j++) {
>       printf("%f  %f\n", coors[j][i].x, coors[j][i].y);
>     }
>   }
> 
>   DMDAVecRestoreArray(cda, gc, &coors);
> 
> I wonder why I need to use "DMDAVecRestoreArray(cda, gc, &coors);" I used it 
> because the manual said I need. Actually, I tried to comment it out and there 
> is no difference.
> 
> Thanks,
> Alan

   The practical reason is you might get memory bleeding if you don't.  The 
philosphical reason is that a call DMDAVecGetArray() or VecGetArray() or others 
is a request to access the internal data structure of an object, the object 
then gives you permission to access that data. the RestoreArray() is a 
statement by you that after this call you will NOT access that data directly 
(without another GetArray call). Imagine if you did

    Barry


     

Reply via email to