- 论坛徽章:
- 0
|
void* queue_new(uint32_t size) {
queue *q = NULL;
q = (queue*)malloc(sizeof(queue));
passert(q);
q->head = NULL;
q->tail = &(q->head);
q->elements = 0;
q->size = 0;
q->maxsize = size;
q->freewaiting = 0;
q->fullwaiting = 0;
if (size) {
eassert(pthread_cond_init(&(q->waitfull),NULL)==0);
}
eassert(pthread_cond_init(&(q->waitfree),NULL)==0);
eassert(pthread_mutex_init(&(q->lock),NULL)==0);
fprintf(stderr,"queue address is %p\n",q);
return (void*)q;
}
static void *myqueue;
fprintf(stderr, "queue address: %p\n",my queue);
myqueue = (void *)queue_new(0);
fprintf(stderr, "queue address: %p\n", myqueue);
运行显示:
queue address: (nil)
queue address is 0x2aaab0008680
queue address: 0xffffffffb0008680
调用函数后,指针值由0x2aaab0008680改为0xffffffffb0008680。
请问什么问题导致的呢? |
|