1

当我用 printf 打印它时,我得到了不同的值。我尝试了很多来解决这个问题。但是我不知道如何解决这个问题- 这是几行代码-

#Dymically allocated memory-
 char **child = (char **)malloc(totalRows * sizeof(*child));

 int i=0;
 while ((row = mysql_fetch_row(res)) != NULL)
        {
                child[i] = (char *)malloc(strlen(row[1]) + 1);
                child[i]=strdup(row[1]);
                printf("%u %s \n",  &child[i], child[i]);
                i++;
       }

int j=0;
for (j; j<i; j++)
     printf("%u %s \n",  &child[j], child[j]);

输出是

7127200 1111 
7127208 111111vv 
7127216 111111sd 
7127224 111111en 
7127232 111113nk 
7127240 111113t3 

7127200 1111 
7127208 1111      //..Here I am getting different value- 
7127216 111111sd 
7127224 111111en 
7127232 111113nk 
7127240 111113t3
4

1 回答 1

0

我会在这里尝试几件事:

零孩子

删除 child[i] = (char *)malloc(strlen(row[1]) + 1); //因为您已经使用 strdup 分配了内存

自由儿童[i]

char * child = (char * )malloc(totalRows * sizeof(char *)); // child 是一个指向 char * 数组的指针

让我知道这是否适合您

于 2013-10-16T22:10:18.337 回答