C中的值覆盖

时间:2013-10-16 07:01:42

标签: c pointers malloc

当我用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

1 个答案:

答案 0 :(得分:0)

我会在这里尝试一些事情:

bzero孩子

remove child [i] =(char *)malloc(strlen(row [1])+ 1);  //因为你已经使用strdup

分配了内存

免费儿童[i]

char * child =(char * )malloc(totalRows * sizeof(char *)); // child是指向char *指针

数组的指针

如果这对您有用,请告诉我