我有一个表示表中一行的结构:
typedef struct {
char *a;
char *b;
} row;
我有一个函数可以根据 db 数据初始化该行并返回一个指向它的指针
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 显示 rows[0] (以及所有其他)永远不会获得新值,也就是说,它总是指向同一个地址,几乎就像rows[i] = get_row(dbrow)
行没有不存在。