数组指针地址自动改变
大家好,本人在学习数组指针时,编写了一个小的赋值程序,但程序中确出现了指针地址自动改变的“诡异现象”,现将代码和出现的问题描述如下,求各位大神指教,万分感谢!!
template<typename T>
T** MemAlloc2d(int NoCols, int NoRows)
{
int k;
T** matrix2d;
matrix2d = (T **)malloc((NoRows)*sizeof(T *));
for(k=0; k<NoCols; k++)
{
*(matrix2d + k) =(T*)malloc((NoRows)*sizeof(T));
}
return matrix2d;
}
template<typename T>
void MemFree2d(T** matrix2d, int NoCols, int NoRows)
{
int k;
for(k=0; k<NoCols; k++)
{
free(*(matrix2d + k));
}
free(matrix2d);
}
int _tmain(int argc, _TCHAR* argv[])
{
float** pData = MemAlloc2d<float>(517,495);
for(int i = 0;i < 517; i++)
{
float* temp = new float[495];
for(int i = 0; i< 495; i++)
{
temp[i] = i + 0.1f;
}
memcpy(&pData[i][0],temp,495*sizeof(float));
delete[] temp;
}
MemFree2d<float>(pData,517,495);
}