I only include the first few lines of SLEPc example. What about following ierr = MatCreate(PETSC_COMM_WORLD,&A);CHKERRQ(ierr); ierr = MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,n,n);CHKERRQ(ierr); Is there any memory lost?
On Mon, Jan 20, 2020 at 10:41 AM Dave May <[email protected]> wrote: > > > On Mon 20. Jan 2020 at 19:39, Sam Guo <[email protected]> wrote: > >> I don't have a specific case yet. Currently every call of PETSc is >> checked. If ierr is not zero, print the error and return. For example, >> Mat A; /* problem matrix */ >> EPS eps; /* eigenproblem solver context */ >> EPSType type; >> PetscReal error,tol,re,im; >> PetscScalar kr,ki; Vec xr,xi; 25 >> PetscInt n=30,i,Istart,Iend,nev,maxit,its,nconv; >> PetscErrorCode ierr; >> ierr = SlepcInitialize(&argc,&argv,(char*)0,help);CHKERRQ(ierr); >> ierr = PetscOptionsGetInt(NULL,NULL,"-n",&n,NULL);CHKERRQ(ierr); >> ierr = PetscPrintf(PETSC_COMM_WORLD,"\n1-D Laplacian Eigenproblem, >> n=%D\n\n",n);CHKERRQ(ierr); >> >> I am wondering if the memory is lost by calling CHKERRQ. >> > > No. > > > >> On Mon, Jan 20, 2020 at 10:14 AM Dave May <[email protected]> >> wrote: >> >>> >>> >>> On Mon 20. Jan 2020 at 19:11, Sam Guo <[email protected]> wrote: >>> >>>> Dear PETSc dev team, >>>> If PETSc function returns an error, what's the correct way to clean >>>> PETSc? >>>> >>> >>> The answer depends on the error message reported. Send the complete >>> error message and a better answer can be provided. >>> >>> Particularly how to clean up the memory? >>>> >>> >>> Totally depends on the objects which aren’t being freed. You need to >>> provide more information >>> >>> Thanks >>> Dave >>> >>> >>>> Thanks, >>>> Sam >>>> >>>
