首页 > 解决方案 > 堆栈推送功能仅在调试时有效

问题描述

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

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;

}

我看不到错误。我会很感激一些帮助。

谢谢

标签: cdynamicstackmalloc

解决方案


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

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


推荐阅读