当前位置:  技术问答>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;
}

|
估计 默认的零 只是相对地址,或者说是偏移量,在程序实际执行时会自动加上绝对地址起始位置的

|
用这两个宏看看你的系统是不是支持线程栈属性
_POSIX_THREAD_ATTR_STACKADDR 
_POSIX_THREAD_ATTR_STACKSIZE

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3