c - 堆栈推送功能仅在调试时有效
问题描述
我的推送功能有问题。这是堆栈结构的简单推送功能,但大多数时候不起作用。它仅在调试时有效。这是功能:
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;
}
我看不到错误。我会很感激一些帮助。
谢谢
解决方案
sizeof(tmp)
将返回指针的大小,而不是对象的大小,也许sizeof(*tmp)
,但我认为最好的是
tmp=(tFavoriteStackNode*)malloc(sizeof(tFavoriteStackNode));
推荐阅读
- sql - 可以在 SQL 的同一个滚动窗口中计算多个总和吗?
- javascript - 在二维数组中分配值时如何捕获索引?
- varnish - 在清漆服务器上启用跟踪
- javascript - 使用 codeigniter 进行多个 ajax 调用
- excel - 在打开的工作表中运行 VBA 宏时的错误处理
- javascript - 更改复选框和单选按钮标签的字体大小
- amazon-web-services - 我可以在使用 aws ec2 run-instances 创建实例时标记接口吗?
- javascript - 嵌入式 YouTube API 的递归自定义缩略图不会重播
- python - python3中转换温度的小程序
- authentication - 为什么我的 jsreport 身份验证不起作用?