- 论坛徽章:
- 0
|
谁来帮忙看一下,队列入队函数出错的问题:
这段代码应该没问题的,看看是不是别的地方引起core dump
- MsgNode * p=NULL;
- p = (MsgNode *)malloc(sizeof(MsgNode));
- if(p != NULL){
- printf("Debug1\n");
- p->;pnext = NULL;
- printf("Debug2\n");
- p->;msgpkt = e;
- }
复制代码
一个例子:
- #include <stdio.h>;
- #include <stdlib.h>;
- #include <sys/errno.h>;
- typedef struct{
- char msg1[20];
- char msg2[20];
- } MsgPkt;
- typedef struct MsgNode{
- MsgPkt msgpkt;
- struct MsgNode * pnext;
- } MsgNode;
- typedef struct{
- MsgNode * phead;
- MsgNode * ptail;
- } MsgQueue;
- void EnQueue(MsgQueue *Q, MsgPkt e)
- {
- MsgNode *p = NULL;
-
- p = (MsgNode *)malloc(sizeof(MsgNode));
- if (NULL == p)
- {
- fprintf(stderr, "malloc() error: [%s]\n", strerror(errno));
- exit(-1);
- }
-
- p->;pnext = NULL;
- p->;msgpkt = e;
-
- if (NULL == Q->;phead)
- {
- /* 队列第一个元素 */
- Q->;ptail = p;
- Q->;phead = p;
- }
- else
- {
- Q->;ptail->;pnext = p;
- Q->;ptail = p;
- }
- }
- int main(void)
- {
- MsgQueue Q;
- MsgNode *pNode;
- MsgNode *ptmpNode;
- MsgPkt pkg1;
- MsgPkt pkg2;
- int n;
-
- memset(pkg1.msg1, 0x00, sizeof(pkg1.msg1));
- memset(pkg1.msg2, 0x00, sizeof(pkg1.msg2));
- strcpy(pkg1.msg1, "abc");
- strcpy(pkg1.msg2, "123");
-
- memset(pkg2.msg1, 0x00, sizeof(pkg2.msg1));
- memset(pkg2.msg2, 0x00, sizeof(pkg2.msg2));
- strcpy(pkg2.msg1, "def");
- strcpy(pkg2.msg2, "456");
-
- Q.phead = NULL;
- Q.ptail = NULL;
-
- EnQueue(&Q, pkg1);
- EnQueue(&Q, pkg2);
-
- pNode = Q.phead;
- n = 0;
- while (pNode != NULL)
- {
- n++;
- fprintf(stderr, "package %d: %s, %s\n", n, pNode->;msgpkt.msg1, pNode->;msgpkt.msg2);
- ptmpNode = pNode->;pnext;
- free(pNode);
- pNode = ptmpNode;
- }
- return(0);
- }
复制代码
运行结果:
package 1: abc, 123
package 2: def, 456 |
|