为结构指针分配内存的问题

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();

是一个问题,因为您正在访问不存在的 instancecurrentRecipe 成员; instance没有指向任何地方,所以你需要先分配它:

instance = malloc(sizeof(t_REC_instance));

修复:

您的代码正在分配 instance 指向的结构的 currentRecipe 成员,但是 instance 没有设置任何值,这意味着它指向内存的某个无效部分这是导致错误的原因。

更改此行:

t_REC_instance *instance;

t_REC_instance instance;

和这一行:

REC_createInstance1(instance);

REC_createInstance1(&instance);