- 论坛徽章:
- 0
|
求助:在pthead线程中使用localtime_r出错,请各位大侠帮忙!
以下的代码段用于生成 pthread 子线程:
pthread_attr_t attr;
pthread_t ptid;
pthread_attr_init(&attr);
/* 设置堆栈大小*/
if(stackSize < MIN_STACK_SIZE)
stackSize = MIN_STACK_SIZE;
if(pthread_attr_setstacksize(&attr,stackSize) != 0)
{
printf("utaskSpawn failed:reason=1,stacksize=%d.\r\n",stackSize);
return -1;
}
if(pthread_create(&ptid,&attr,entryPt,(void *)arg) != 0)
return -1;
以下代码段在线程中调用 localtime_r函数:
time_t utm;
struct tm tmpTm;
:
:
/*得到一个UNIX标准时间值存入utm中*/
:
:
localtime_r(&utm,&tmpTm);
我这里为了简明,做了一点修改,原程序中对localtime_r在封装在另一个函数中,相当于utm和tmpTm位于不同的函数堆栈中,不知道这有没有影响。
这段代码能在程序启动后成功执行将近10秒,然后就在localtime_r的调用点上发生内存错误。
我的程序编译和链接是分开的,
编译选项:cc -c -g -o file.c file.c |
|