【发布时间】:2014-03-16 17:10:02
【问题描述】:
这个想法是只使用两个函数,它们可以分配和释放在编译时未知的给定数据类型的二维数组。我在释放函数中编写的代码崩溃了,但我不明白为什么。代码如下:
void** new2DArray(int row, int col, int typeSize){
void** temp = malloc(sizeof(void*)*row); //EDIT
for (row-=1; row >= 0; row--)
temp[row] = malloc(typeSize*col);
return temp;
}
void free2DArray(void** array, int row, int typeSize){
for (row -= 1; row >= 0; row--)
free( *(array + row*typeSize) );
free(array);
}
对于 3x3 数组,其中 is 将被称为:
double** test = (double**) new2DArray(3, 3, sizeof(double));
free2DArray(test, 3, sizeof(double));
释放功能有什么问题吗?
【问题讨论】:
-
在
free2DArray中转换array做double **不是更容易吗? -
当然,如果您总是要使用
double数组。关键是要有一个通用函数,您可以在其中创建int2D 数组、unsigned short或任何东西。我让这一切只适用于一种数据类型。
标签: c malloc multidimensional-array