gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:35:03 26 4
gpt4 key购买 nike

抱歉,如果这个问题已经讨论得很彻底,但我似乎找不到任何与我遇到的问题相关的内容。在下面的代码中,我尝试创建一个结构数组,该数组将传递给许多不同的函数。我需要动态分配数组,因为它根据用户输入的指令数量而变化。我不确定我使用 malloc() 的变量声明是否不正确,但每次运行时我都会在 free(指令)行上遇到断点。我还尝试将 free(指令)行放在 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));

关于C 释放动态分配的结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58702193/

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