繁体   English   中英

C 释放动态分配的结构数组

[英]C freeing up dynamically allocated structure array

对不起,如果这已经被讨论死了,但我似乎找不到任何与我遇到的问题有关的东西。 在下面的代码中,我试图创建一个结构数组,这些结构将传递给许多不同的函数。 我需要动态分配数组,因为它根据用户输入的指令数量而变化。 我不确定我对使用 malloc() 的变量的声明是否不正确,但在每次运行时,我都会在 free(instruction) 行遇到一个断点。 我还尝试将 free(instruction) 行放在 if 语句之外,但它会产生相同的结果。这是一个家庭作业,任何提示或解释将不胜感激。

struct instructions
{
    char destination_register[3],
        reg1[3],
        reg2[3];        //declaration of destination and source registers.
    int delay;
};

struct instructions* instruction;

int main() {

    int input=0;
    char test1[2];
    int test,numberofinstructions=0;

    do {
        printf ("Pipelined instruction performance\n"
                "1) Enter instructions\n"
                "2) Determine when instructions are fetched\n"
                "3) Exit\n"
                "Enter selection : ");
        scanf("%d",&input);
        if (input==1) {
            printf ("Enter number of instructions: ");
            scanf ("%d", &numberofinstructions);

            instruction = (struct instructions*) malloc(numberofinstructions + 
                            1 * sizeof(struct instructions));
            enterinstructs (instruction, numberofinstructions);

            printf("\n");
            free (instruction);
        }
    } while (input != 3);

    return 1;
}

我不认为你想要这个:

instruction = (struct instructions*) malloc(numberofinstructions + 1 * sizeof(struct instructions));

这里发生的事情是你分配了空间sizeof(struct instructions) + numberofinstructions这是没有意义的。

您想要做的可能是:

instruction = (struct instructions*) malloc((numberofinstructions + 1) * sizeof(struct instructions));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM