0

您好我在尝试初始化 struct 数组的每个元素时遇到问题。当我尝试将值零分配给“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));
        }
4

1 回答 1

0

nodeCount 值从何而来?是全局变量吗?您应该非常小心全局变量,并尽可能避免使用它们。

在方法参数中传递 nodeCount,正如查理提到的,检查它是否 > 0

于 2013-10-18T04:40:02.807 回答