pastebin

Paste #79026: error function

char**	string_split(char *url,char sp,int *ret)	//分割字符串,返回二维字符串表
{
	int	i=0,j=0,sum_of_sp=0,i_max=strlen(url);			//i,j用于循环基数,sum_of_sp记录 '&' 的个数,i_max字符串的长度
	int	*index_list=NULL;
	char	**res=NULL;
	for(i=0;i<i_max;i++){if(url[i]==sp)sum_of_sp++;}		//计算'&' 个数有4个&则sum_of_sp=4

	index_list=(int*)malloc(sizeof(int*)*(sum_of_sp+1));			//储存分割偏移量表index_list 比sum_of_sp多1,用于储存结束位置

	for(i=0,j=0;i<=i_max;i++)						//遍历url,记录偏移量到index_list
	{
		if(url[i]==sp || url[i]=='\0')
		{
			index_list[j]=i;
			j++;
		}
	}									

	res=(char**)malloc(sizeof(char**)*(sum_of_sp+2));			//生成储存字段的二维表头

	res[0]=(char*)malloc(sizeof(char)*(index_list[0]+1));
	strncpy(res[0],url,index_list[0]);
	res[index_list[0]]='\0';
	//printf("%s \n",res[0]);

	for(i=1;i<=sum_of_sp;i++)
	{
		res[i]=NULL;
		res[i]=(char*)malloc(sizeof(char)*(index_list[i]-index_list[i-1]));
		strncpy(res[i],url+index_list[i-1]+1,index_list[i]-index_list[i-1]-1);			//复制字符
		//printf("%s \n",res[i]);
		
	}
	*ret=sum_of_sp+1;
	free(index_list);							//释放偏移量表
	return	res;		
}



/*have error
 malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Aborted
*/

Private
Wrap long lines

5 + 2 =