我有一個表示在一個表中的行的結構:添加指針動態指針陣列中的一個環在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