[petsc-dev] PetscMalloc for size zero
    Barry Smith 
    bsmith at mcs.anl.gov
       
    Thu Jan 30 13:53:45 CST 2014
    
    
  
On Jan 30, 2014, at 12:46 PM, Brad Aagaard <baagaard at usgs.gov> wrote:
> On 01/30/2014 10:34 AM, Jed Brown wrote:
>> Brad Aagaard <baagaard at usgs.gov> writes:
>> 
>>> Matt and Jed,
>>> 
>>> I see that Jed pushed some changes (jed/malloc-zero) for PetscMalloc to
>>> deal with memory alignment and a zero size. It looks like the pointer
>>> will NOT be NULL for a size of 0. Is this true?
>> 
>> Yes, just like malloc(), it can be either a unique pointer or NULL.  You
>> need the size anyway to know how many elements are in the array.
> 
> I thought it was a nice feature that PETSc improved on malloc() and free() by returning NULL for zero sized allocation (although this wasn't true for --with-debugging=0 due to memory alignment) and set pointers to NULL after freeing.
   With PetscMalloc() we could certainly return NULL on 0 mallocs but the code is a bit more involved  for the PetscMallocn() case. 
   Here is what I suggestion. Someone suggest (i.e.. write) a refactorization of PetscMalloc(), PetscMallocn() that handles correctly any of the sizes being zero correctly in a branch and see how it goes. 
   Barry
> 
> What is the rationale for not returning NULL for mallocs of size zero other than conforming to C malloc behavior?
> 
> Brad
> 
> 
    
    
More information about the petsc-dev
mailing list