当前位置: 技术问答>linux和unix
用pthread_attr_getstack()函数获取线程的栈大小 和起始地址为什么都是0
来源: 互联网 发布时间:2017-01-23
本文导语: #include #include #include #include #include #include void *thread(void *arg) { printf("thread runn"); return ((void *)0); } int main(void) { pthread_t tid; pthread_attr_t attr; pthread_attr_init(&attr); void *stack; siz...
#include
#include
#include
#include
#include
#include
void *thread(void *arg)
{
printf("thread runn");
return ((void *)0);
}
int main(void)
{
pthread_t tid;
pthread_attr_t attr;
pthread_attr_init(&attr);
void *stack;
size_t stacksize;
pthread_create(&tid,&attr,thread,NULL);
pthread_attr_getstack(&attr,&stack, &stacksize);
printf("%x stacksize:%u",stack,stacksize);
sleep(2);
return 0;
}
这是想获取线程栈的起始地址和默认栈大小的程序,为什么程序运行后得出的结果 默认的都是零;
下面是我设置线程的栈的最低地址,和栈大小以后的一个程序,运行后得出的结构还是零 不知道什么原因,请高手指点 谢谢了
#include
#include
#include
#include
#include
#include
pthread_attr_t attr;
void *thread(void *arg)
{
printf("thread runn");
return ((void *)0);
}
int main(void)
{
pthread_t tid;
void *stack;
size_t stacksize;
pthread_attr_init(&attr);
stack=malloc(1024);
pthread_attr_setstack(&attr,stack,1024);
pthread_create(&tid,&attr,thread,NULL);
pthread_attr_getstack(&attr,&stack, &stacksize);
printf("%x stacksize:%un",stack,stacksize);
sleep(2);
return 0;
}
#include
#include
#include
#include
#include
void *thread(void *arg)
{
printf("thread runn");
return ((void *)0);
}
int main(void)
{
pthread_t tid;
pthread_attr_t attr;
pthread_attr_init(&attr);
void *stack;
size_t stacksize;
pthread_create(&tid,&attr,thread,NULL);
pthread_attr_getstack(&attr,&stack, &stacksize);
printf("%x stacksize:%u",stack,stacksize);
sleep(2);
return 0;
}
这是想获取线程栈的起始地址和默认栈大小的程序,为什么程序运行后得出的结果 默认的都是零;
下面是我设置线程的栈的最低地址,和栈大小以后的一个程序,运行后得出的结构还是零 不知道什么原因,请高手指点 谢谢了
#include
#include
#include
#include
#include
#include
pthread_attr_t attr;
void *thread(void *arg)
{
printf("thread runn");
return ((void *)0);
}
int main(void)
{
pthread_t tid;
void *stack;
size_t stacksize;
pthread_attr_init(&attr);
stack=malloc(1024);
pthread_attr_setstack(&attr,stack,1024);
pthread_create(&tid,&attr,thread,NULL);
pthread_attr_getstack(&attr,&stack, &stacksize);
printf("%x stacksize:%un",stack,stacksize);
sleep(2);
return 0;
}
|
估计 默认的零 只是相对地址,或者说是偏移量,在程序实际执行时会自动加上绝对地址起始位置的
|
用这两个宏看看你的系统是不是支持线程栈属性
_POSIX_THREAD_ATTR_STACKADDR
_POSIX_THREAD_ATTR_STACKSIZE
_POSIX_THREAD_ATTR_STACKADDR
_POSIX_THREAD_ATTR_STACKSIZE
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。