[petsc-dev] XXXDestroy() mistaken design in PETSc

Barry Smith bsmith at mcs.anl.gov
Tue Feb 15 16:47:35 CST 2011

  In MPI one calls MPI_Comm_free(&comm) to allow the MPI implementation to set the pointer explicitly to 0 after the object is destroyed.

  In Petsc XXXDestroy() does not pass the pointer (because it seemed too unnatural to me in 1994) thus not allowing 0ing the pointer. 

   Was this a bad design decision? Should it be revisited? 


  Two use cases 

1) error detection when someone tries to reuse a freed object

2) when removing some objects from a data structure that will be used data one currently needs to do

  XXXXDestroy(mystruct->something);CHKERRQ(ierr); mystruct->something = 0; 

instead of the cleaner XXXDestroy(&mystruct->something);CHKERRQ(ierr); 

More information about the petsc-dev mailing list