Code:regarding header : memorytest.h /*#ifndef MEMORYTEST_H #define MEMORYTEST_H #include <stdlib.h> template <class type1, class type2> void allocateData1DbyMalloc(type1** data1D, type2 nRow) { int size = (char*) &(*data1D)[1] - (char*) & (*data1D)[0]; *data1D = (type1*)malloc(nRow * size); // sizeof(type1)); } template <class type1> void deAllocateData1DbyFree(type1** data1D) { free(*data1D); } template <class type1, class type2> void allocateData2DbyMalloc(type1*** data2D, type2 nRow, type2 nColumn) { int size = (char*) & (*data2D)[1] - (char*) & (*data2D)[0]; *data2D = (type1 * *)malloc(size * nRow); // sizeof(type1*) if (*data2D) { size = (char*) & (**data2D)[1] - (char*) & (**data2D)[0]; for (int i = 0; i < nRow; i++) { (*data2D)[i] = (type1*)malloc(size * nColumn); // sizeof(type1) } } } template <class type1, class type2> void destroyMatrix2DbyFree(type1*** data2D, type2 numberOfRow) { for (int row = 0; row < numberOfRow - 1; row++) free((*data2D)[row]); free(*data2D); } #endif