免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: dreamice

【转】堆和栈的区别——给初学者 [复制链接]

论坛徽章:
0
发表于 2013-11-20 00:54 |显示全部楼层
顶一个,拨云见日哇,以前对这个总是一知半解

论坛徽章:
0
发表于 2016-08-01 15:55 |显示全部楼层
不错,不错

论坛徽章:
0
发表于 2016-08-11 23:11 |显示全部楼层
总结的不错,补充几点:
1. 函数返回地址,参数和局部变量入栈,组成栈帧,函数返回后栈帧出栈;栈可以看成是由一系列栈帧组成,有了栈顶就可以恢复现场;
递归函数会频繁入栈,调用过深有可能导致栈溢出;
内联函数不进行函数调用,没有入栈出栈操作,即提高了执行效率,又支持参数类型检查,可以看成是不使用栈的函数,当然代价是代码会变大;

2. 刚才说了栈顶,栈底则用于存放thread_info,通过thread_info就可以推导出任务结构,得到进程信息,以arm64为例:
#define current (current_thread_info()->task)
static inline struct thread_info *current_thread_info(void)
{
            return (struct thread_info *)(current_stack_pointer & ~(THREAD_SIZE - 1)); // THREAD_SIZE大小是16K
}


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP