cuer_2 发表于 2009-04-05 13:04

pthread_attr_getstack得到的结果

我想通过pthread_attr_getstack来得到线程的默认属性值
但是得到的结果比较奇怪
有高手帮忙可以分析一下吗?
怎么stackaddr是0,stacksize也是0?
难道是pthread_create的时候临时申请的吗?
我写了一个pthread_create 测试了一下还是这个结果哦

pthread_attr_t attr;
void *stackaddr;
size_t stacksize;
pthread_attr_init(&attr);
pthread_attr_getstack(&attr,&stackaddr,&stacksize);
printf("statck address = %p stack size = %x\n",stackaddr,stacksize);


输出结果:

statck address = (nil) stack size = 0

eclipse_2 发表于 2009-04-05 13:04

默认的值就是0
如果你pthread_attr_setstacksize()的话
就可以得到你设置的值了

cuer_2 发表于 2009-04-05 21:09

似乎是这样的~

tongchao199 发表于 2012-09-24 19:37

可以通过pthread_attr_setstack()进行设置    stacksize =N*PTHREAD_STACK_MIN    以及   stackaddr=(void*)malloc((N+1)*PTHREAD_STACK_MIN) PTHREAD_STACK_MIN宏需包含<limits.h>头文件。

socay2 发表于 2013-01-05 16:02

eclipse_2 发表于 2009-04-05 13:04 static/image/common/back.gif
默认的值就是0
如果你pthread_attr_setstacksize()的话
就可以得到你设置的值了

今天遇到同样的疑问?
如果线程的默认 stacksize 和 stackaddr 都是 0 的话,那么在不自己设置的情况下(全都采用默认),线程中的变量在哪里得到内存呢?
页: [1]
查看完整版本: pthread_attr_getstack得到的结果