求助!

361719298 2013-01-25 05:05:44

struct ACL_ARRAY{
int capacity; /**< items 数组空间大小 */
int count; /**< items 中含有元素的个数 */
void **items; /**< 动态数组 */
};


void acl_array_clean(ACL_ARRAY*a,void(*f)(void *))
{
int i;
if(a==NULL)
return;
for(i=0;i<a->count;i++)
{
if(a->items[i]!=NULL)
{
free(a->items[i]);
a->items[i]=NULL;
}
}
a->count=0;
}


动态数组结构体定义和一个销毁的函数如上!!
请问问什么free(a->items[i]);当i=0时编译不过!!当i!=0时正常!!
...全文
54 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
361719298 2013-01-27
  • 打赏
  • 举报
回复
引用 3 楼 wade_2003 的回复:
个人觉得是你没有对item进行初始化,或者说没有分配地址
确实是,创建二级指针的时候,不仅要给二级指针分配空间,还要给一级指针分配空间。或者在调用的时候分配,多谢
wade_2003 2013-01-25
  • 打赏
  • 举报
回复
个人觉得是你没有对item进行初始化,或者说没有分配地址
361719298 2013-01-25
  • 打赏
  • 举报
回复
谁能帮忙看一下,传递的函数是free()
361719298 2013-01-25
  • 打赏
  • 举报
回复
还有这个 是一个意思 为什么呢??

int acl_array_delete_idx(ACL_ARRAY*a,int position,void(*f)(void*))
{
	int i;
	if(a==NULL||f==NULL||position<0||position>=a->count)
		return (-1);
	if(f!=NULL&&(a->items[position])!=NULL)
	{
		f(a->items[position]);
		a->items[position]=NULL;
	}

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧