Changeset 13296
- Timestamp:
- 09/07/12 14:53:38 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/shared/Alloc/xNewDelete.h
r13248 r13296 34 34 35 35 template <class T> 36 T** 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 58 template <class T> 36 59 T* xNewZeroInit(unsigned int size) { 37 60 #ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES … … 48 71 49 72 template <class T> 50 void xDelete(T*& aT_p) { 73 void 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 86 template <class T> 87 void xDelete(T*& aT_p) { 51 88 if (aT_p) 52 89 #ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
Note:
See TracChangeset
for help on using the changeset viewer.