1
所以我做了strucure:错误与使用malloc()内存分配,可以在一个项目只会增加表
typedef struct Achat {
char aAcheter[25];
double quantite;
double prixUnitaire;
categorie rayon;
} achat;
两个静态整数:
static int physicalSize = 0;
static int logicalSize = 0;
和一个功能:
int ajout (achat a, achat **table){
if (physicalSize == 0){
if ((*table = (achat *) malloc (5 * sizeof(achat))) == NULL){
perror ("malloc error");
return -1;
}
physicalSize = 5;
}
if (logicalSize == physicalSize){
if ((*table = (achat *) realloc(table, (physicalSize *= 2) * sizeof(achat))) == NULL){
perror("realloc error");
return -1;
}
}
*(table)[logicalSize] = a;
logicalSize++;
return logicalSize;
}
基本上,当我第一次调用该函数时,一切正常,该项目被添加到表中,并且physicalSize和logica lSize被更新。 当我第二次调用该函数时会出现问题:出现分段错误。我的猜测是,malloc的是不是做得很好,甚至尽管我看不到我应该改变什么:/
谢谢您的回答:)
注:第二个参数(ACHAT **表)是一个单独的数组,与表的地址一起传递。
要添加,我猜'realloc()'的第一个参数应该是'* table',而不是'table'。 – MikeCAT
@MikeCAT adadded,谢谢:) – Quentin
谢谢你的回答, 关于realloc我相信你是对的,没有测试它,所以我没有看到它(thx :)) 并感谢昆汀我在malloc之前删除演员(很高兴知道它不好使用:3) –