我的推送功能有问题。这是用于堆栈结构的简单推入功能,但大多数时候不起作用。它仅在调试时有效。 这是功能:
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;
}
我看不到错误。 我将不胜感激。
谢谢
答案 0 :(得分:3)
sizeof(tmp)
将返回指针的大小,而不是对象的大小,也许返回sizeof(*tmp)
,但我认为最好的是
tmp=(tFavoriteStackNode*)malloc(sizeof(tFavoriteStackNode));