Changeset 13451


Ignore:
Timestamp:
09/26/12 15:30:13 (12 years ago)
Author:
utke
Message:

NEW 2-dim variant of zero init array allocation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/shared/Alloc/xNewDelete.h

    r13327 r13451  
    1313// C++ style memory management
    1414#define USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
    15 // but for speed on may alternatively use C memory managment
     15// but for speed on may alternatively use C memory management
    1616// but can do so safely only for T that are at most
    1717// plain old data structures (POD)
     
    6969  assert(aT_p);
    7070  return aT_p;
     71#endif
     72}
     73
     74template <class T>
     75T** xNewZeroInit(unsigned int dim1, unsigned int dim2) {
     76#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
     77  T** aT_pp=xNew<T>(dim1,dim2);
     78  for (unsigned int i=0; i<dim1*dim2;++i)
     79    *aT_pp[i]=(T)0;
     80  return aT_pp;
     81#else
     82  T* buf=(T*)calloc(dim1*dim2*sizeof(T));
     83  assert(buf );
     84  T** aT_pp =(T**)malloc(dim1*sizeof(T*));
     85  assert(aT_pp );
     86  for (unsigned int i=0;i<dim1;++i) {
     87    aT_pp [i]=buf;
     88    buf+=dim2;
     89  }
     90  return aT_pp ;
    7191#endif
    7292}
Note: See TracChangeset for help on using the changeset viewer.