您好,我在尝试初始化结构数组的每个元素时遇到问题。当我尝试将值 0 分配给“bSize”和“msgs”时,它不起作用,因为当我到达 malloc 时它会出错。在 printf 语句中,它打印一个 -1852803823 数字。请原谅我正在尝试找出困惑的代码。
struct message{
int *data;
int bSize;
int msgs;
};
int main(int argc, char *argv[]) {
.....
}
void getSchedFile (FILE *file, int **schd) {
struct message sMsg[nodeCount];
const int pakSize = 6;
// Iniitialise message buffer
for (int i=0; i<nodeCount; i++){
sMsg[i].bSize = 0;
sMsg[i].msgs = 0;
printf("bSize %d\n",sMsg[i].bSize);
}
/* Get the number of bytes */
fseek(file, 0L, SEEK_SET);
int time;
while((fscanf(file, "%d", &time)) != EOF){
int src;
fscanf(file, "%d", &src); // get source node id
// These are here for easier reading code
int aPos = sMsg[src].bSize;
int nMsg = sMsg[src].msgs;
printf("size %d\n", sMsg[src].bSize);
if (sMsg[src].bSize==0){
sMsg[src].data = malloc( pakSize * sizeof(int));
}else{
sMsg[src].data = realloc(sMsg[src].data, (aPos+pakSize)*sizeof(int));
}
最佳答案
nodeCount 值从何而来?它是全局变量吗?您应该非常小心地使用全局变量,并尽可能避免使用它们。
在方法参数中传递nodeCount,并正如Charlie提到的,检查它是否> 0
关于c - C 中的结构体数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19441280/