C释放动态分配的结构数组
C freeing up dynamically allocated structure array
对不起,如果这已经被讨论到死,但我似乎找不到与我遇到的问题相关的任何内容。在下面的代码中,我试图创建一个结构数组,这些结构将传递给许多不同的函数。我需要根据用户输入的指令数动态分配数组。我不确定我对使用 malloc() 的变量的声明是否不正确,但在每个 运行 上,我在 free(instruction) 行上遇到一个断点。我还尝试将 free(instruction) 行放在 if 语句之外,但它产生的结果相同 result.This 是一项家庭作业,任何提示或解释将不胜感激。
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));
这里发生的事情是你分配了spacesizeof(struct instructions)
+numberofinstructions
这是没有意义的。
你想做的大概是:
instruction = (struct instructions*) malloc((numberofinstructions + 1) * sizeof(struct instructions));
对不起,如果这已经被讨论到死,但我似乎找不到与我遇到的问题相关的任何内容。在下面的代码中,我试图创建一个结构数组,这些结构将传递给许多不同的函数。我需要根据用户输入的指令数动态分配数组。我不确定我对使用 malloc() 的变量的声明是否不正确,但在每个 运行 上,我在 free(instruction) 行上遇到一个断点。我还尝试将 free(instruction) 行放在 if 语句之外,但它产生的结果相同 result.This 是一项家庭作业,任何提示或解释将不胜感激。
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));
这里发生的事情是你分配了spacesizeof(struct instructions)
+numberofinstructions
这是没有意义的。
你想做的大概是:
instruction = (struct instructions*) malloc((numberofinstructions + 1) * sizeof(struct instructions));