堆栈推送功能仅在调试时有效

时间:2019-11-13 11:50:53

标签: c dynamic stack malloc

我的推送功能有问题。这是用于堆栈结构的简单推入功能,但大多数时候不起作用。它仅在调试时有效。 这是功能:

tError favoriteStack_push(tFavoriteStack *stack, tFavorite favorite) {
    //assert(stack!=NULL);

    tFavoriteStackNode* tmp;

    //mem_allocation of new node
    tmp=(tFavoriteStackNode*)malloc(sizeof(tmp));

    if(tmp==NULL)
        return ERR_MEMORY_ERROR;

    //copying element to new node
    tmp->e=favorite;

    //pointing next to previous first element
    tmp->next=stack->first;

    //new node is the new first node
    stack->first=tmp;

    return OK;

}

我看不到错误。 我将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:3)

sizeof(tmp)将返回指针的大小,而不是对象的大小,也许返回sizeof(*tmp),但我认为最好的是

tmp=(tFavoriteStackNode*)malloc(sizeof(tFavoriteStackNode));