【发布时间】:2013-04-27 22:48:02
【问题描述】:
我在释放用于将另一个数组的大小加倍的临时结构数组时遇到问题。释放原始数组似乎没有任何问题。
void foo(StruName **structName,i nt *size)
{
...
StruName *temp_array = (StruName*) malloc(*size * 2 * sizeof(StruName));
for (i = 0; i < *size; i++)
temp_array[i] = (*original_array)[i];
free(*original_array);
*original_array = temp_array;
free(*temp_array);
我使用 g++ -Wall 得到以下错误
error: cannot convert ‘StruName’ to ‘void*’ for argument ‘1’ to ‘void free(void*)’
任何想法可能导致这种情况?如果我离开 free(*temp_array);总之,程序编译并运行良好。免费(临时数组);导致段错误
【问题讨论】:
-
如果你能发布整个程序会有所帮助。无论如何,倾向于我指出的错误。函数声明的第一行本身就有错误。
-
糟糕,很抱歉不清楚。 Struct 是 typedef 结构的名称。将其更改为 StruName