我有一个表示在一个表中的行的结构:添加指针动态指针阵列中的一个环在C
typedef struct {
char *a;
char *b;
} row;
和我有初始化基于分贝数据行,并返回一个指针的函数它
row* get_row(dbrow d) {
row *r = malloc(sizeof(row));
r->a = malloc(5);
strcpy(r->a, d.a);
r->b = malloc(5);
strcpy(r->b, d.b);
return r;
}
终于,我有了一个row **rows
作为参数的函数:
void get_rows(row **rows) {
...
rows = malloc(rowNumber * sizeof(row*));
int i;
for (i = 0; i < rowNumber; i++) {
rows[i] = get_row(dbrow);
}
}
get_row按预期工作,并返回一个指向有效行结构的指针,但gdb显示行[0](以及所有其他行)永远不会获得新值,也就是说它总是指向相同的地址,就好像rows[i] = get_row(dbrow)
行不存在。
'rowNumber'从哪里来?你可以发布你的整个代码吗? –
rowNumber被初始化为1.周围的代码处理数据库访问,有点麻烦,它的工作原理,它确实对所示的代码有影响。直到指针分配的所有内容都应该如此。 – cbaby