gpt4 book ai didi

c - 链表中的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:49 24 4
gpt4 key购买 nike

我有这个功能,我可以在其中获取数据库数据并创建一个链表。列表的每个节点都是一行。

这是函数

Row * fetch(Query* query)
{
if (PQresultStatus(query->resultset) != PGRES_TUPLES_OK)
return NULL;

Row * row;
row = (Row *) malloc(sizeof (Row));

row->total_cols = PQnfields(query->resultset);
int rows = PQntuples(query->resultset);

int row_atual, col_atual;
Row * aux;
aux = row;

for (row_atual = 0; row_atual < rows; row_atual++) {
for (col_atual = 0; col_atual < aux->total_cols; col_atual++) {
aux->cell[col_atual] = PQgetvalue(query->resultset, row_atual, col_atual);
}
aux->next_line = (Row *) malloc(sizeof(Row));
aux = aux->next_line;
}
return row;
}

这是结构行:

typedef struct row {
int total_cols;
char ** cell;
struct row * next_line;
} Row;

问题是当它到达这一点时:

aux->next_line = (Row *) malloc(sizeof(Row));

我收到一个段错误,我不知道为什么!我看不出有什么问题。有人知道吗?

谢谢!

最佳答案

您没有为单元成员分配内存,但您使用它来存储数据:

aux->cell[col_atual] = ...;

结果你破坏了随机地址的内存

关于c - 链表中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18991107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com