【发布时间】:2011-10-01 17:03:27
【问题描述】:
我使用的是二维数组,需要按如下方式分配:
char ** buf; //global var
void allocate()
{
buf = (char **) malloc (10 * sizeof (char*));
char * data = (char *) calloc (1, 1000);
int i;
for(i=0; i<10; i++)
buf[i] = &(data[i*100]);
}
int main()
{
allocate();
//something goes here
free(buf[0]);
free(buf);
return 0;
}
现在释放数组,因为我无法访问 main() 中的变量 'data',所以我无法进行 free(data),因此我做了 free(buf[0]),假设我正在释放 1000 个元素的整个数组。这是正确的方法吗? free(buf[0]) 是否释放整个“数据”数组?
(将 buf 的每个元素 malloc 为 buf[i] = malloc (100) 会很方便,但我不能这样做,因为我必须先调用一个大块)。
提前致谢。
【问题讨论】: