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