Changeset 13296


Ignore:
Timestamp:
09/07/12 14:53:38 (13 years ago)
Author:
utke
Message:

NEW: 2-dim allocate/delete template fcts.

File:
1 edited

Legend:

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

    r13248 r13296  
    3434
    3535template <class T>
     36T** xNew(unsigned int dim1, unsigned int dim2) {
     37#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
     38  T* buf=new T[dim1*dim2];
     39  T** aT_pp =new T*[dim1];
     40  for (unsigned int i=0;i<dim1;++i) {
     41    aT_pp [i]=buf;
     42    buf+=dim2;
     43  }
     44  assert(aT_pp );
     45  return aT_pp ;
     46#else
     47  T* buf=(T*)malloc(dim1*dim2*sizeof(T));
     48  T** aT_pp =(T**)malloc(dim1*sizeof(T*));
     49  for (unsigned int i=0;i<dim1;++i) {
     50    aT_pp [i]=buf;
     51    buf+=dim2;
     52  }
     53  assert(aT_pp );
     54  return aT_pp ;
     55#endif
     56}
     57
     58template <class T>
    3659T* xNewZeroInit(unsigned int size) {
    3760#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
     
    4871
    4972template <class T>
    50 void xDelete(T*& aT_p) {
     73void xDelete(T**& aT_pp, unsigned int dim1) {
     74  if (aT_pp) {
     75#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
     76    delete [](*aT_pp);
     77    delete [](aT_pp);
     78#else
     79    free((void*)*aT_pp)
     80    free((void**)aT_pp);
     81#endif
     82  }
     83  aT_pp=0;
     84}
     85
     86template <class T>
     87void xDelete(T*& aT_p) {
    5188  if (aT_p)
    5289#ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
Note: See TracChangeset for help on using the changeset viewer.