为结构指针分配内存的问题
Problem in allocating memory for structure pointer
我有结构t_REC_instance,我想创建一个实例并为其变量分配内存。
我做错了什么。在注释 space 中,它在调试时给出了 sigINT 错误。有人能告诉我我在做什么 wrong.c
typedef struct sAppRecipe
{
union
{
struct sAppBread
{
int sugar_qty;
int salt_qty;
}tAppBread;
struct sAppPancake
{
int sugar_qty1;
}tAppPancake;
};
}tAppRecipe;
typedef struct sAppRecipe tAppRecipe;
struct sREC_instance
{
tAppRecipe *currentRecipe;
tAppRecipe *newRecipe;
tAppRecipe *updateRecipe;
};
typedef struct sREC_instance t_REC_instance;
tAppRecipe *REC_Alloc(void) {
return malloc(sizeof (tAppRecipe));
}
t_REC_instance *instance; //
int REC_createInstance1(t_REC_instance *instance)
{
instance->currentRecipe =REC_Alloc(); // there is a problem here
if (!instance->currentRecipe)
{
printf("not allocated");
}
}
void main()
{
REC_createInstance1(instance);
}
行
instance->currentRecipe =REC_Alloc();
是一个问题,因为您正在访问不存在的 instance
的 currentRecipe
成员; instance
没有指向任何地方,所以你需要先分配它:
instance = malloc(sizeof(t_REC_instance));
修复:
您的代码正在分配 instance
指向的结构的 currentRecipe
成员,但是 instance
没有设置任何值,这意味着它指向内存的某个无效部分这是导致错误的原因。
更改此行:
t_REC_instance *instance;
到
t_REC_instance instance;
和这一行:
REC_createInstance1(instance);
到
REC_createInstance1(&instance);
我有结构t_REC_instance,我想创建一个实例并为其变量分配内存。 我做错了什么。在注释 space 中,它在调试时给出了 sigINT 错误。有人能告诉我我在做什么 wrong.c
typedef struct sAppRecipe
{
union
{
struct sAppBread
{
int sugar_qty;
int salt_qty;
}tAppBread;
struct sAppPancake
{
int sugar_qty1;
}tAppPancake;
};
}tAppRecipe;
typedef struct sAppRecipe tAppRecipe;
struct sREC_instance
{
tAppRecipe *currentRecipe;
tAppRecipe *newRecipe;
tAppRecipe *updateRecipe;
};
typedef struct sREC_instance t_REC_instance;
tAppRecipe *REC_Alloc(void) {
return malloc(sizeof (tAppRecipe));
}
t_REC_instance *instance; //
int REC_createInstance1(t_REC_instance *instance)
{
instance->currentRecipe =REC_Alloc(); // there is a problem here
if (!instance->currentRecipe)
{
printf("not allocated");
}
}
void main()
{
REC_createInstance1(instance);
}
行
instance->currentRecipe =REC_Alloc();
是一个问题,因为您正在访问不存在的 instance
的 currentRecipe
成员; instance
没有指向任何地方,所以你需要先分配它:
instance = malloc(sizeof(t_REC_instance));
修复:
您的代码正在分配 instance
指向的结构的 currentRecipe
成员,但是 instance
没有设置任何值,这意味着它指向内存的某个无效部分这是导致错误的原因。
更改此行:
t_REC_instance *instance;
到
t_REC_instance instance;
和这一行:
REC_createInstance1(instance);
到
REC_createInstance1(&instance);