В предыдущем вопросе ( изменение значения из функции ) я получил помощь, которая привела меня к следующей проблеме:
Я использовал разделение строки, а затем простую копию
int Crawl :: splitUrl(char ***arr, int max_length, char *url)
{
int idx=0;
char * p;
int i;
p = strtok (url,"/"); // call the strtok with str as 1st arg for the 1st time.
while (p != NULL && idx < max_length)
{
for (i=0;i<maxUrlSize-1 && p[i] != '\0';i++)
(*arr)[idx][i] = p[i];
for ( ; i< maxUrlSize-1;i++)
(*arr)[idx][i] = '\0';
printf("tmp[idx[%d]] %s %d addr: %x\n",idx,(*arr)[idx],strlen(p),(*arr)[idx]);
idx++;
p = strtok (NULL, "/");
}
Массив выделяется:
split_url = new char * [ maxUrlSplit ];
printf("split_url %x\n",split_url);
for (i=0;i<maxUrlSplit;i++)
{
split_url[ i ] = new char [ maxUrlSize ];
printf("split_url[ %d ] %x\n",i,split_url[i]);
}
и после функции я использовал цикл для получения всех элементов в массиве.я печатаю его как
printf("add: %x %s %d\n",split_url[iarr], split_url[iarr], strlen(split_url[iarr]));
Адрес всегда один и тот же, но после запуска функции нет записей?
Я запускаю функцию как
int arr_size = crawl->splitUrl(&split_url,maxUrlSplit,url);
ГБД и Вальгринд ничего не говорят.