总目录链接:[RK3568 Android11] 本专栏说明和总目录
目录
前言
内存作为智能设备非常重要器件,而且内存的知识和运用是个非常高深而且难理解的知识块,这里只是简单分析下内存管理一小部分知识:各内存区段的介绍,主要有:数据段(BSS段、DATA段)、代码段(TEXT,RODATA)、堆栈段;
一、栈(stack)
1、什么是栈
引用网上的栈定义:栈又称堆栈,是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的后进先出特点,所以栈特别方便用来保存或恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存交换临时数据的内存区。
用最简单的生活常识来描述:比如我们往桌子上放入多本书籍,先放的书压在下边,后放的书在上边;如果我们要取最底下的书,要先把上面的书依次拿出,才能取到最底下的书;这种先进后出,后进先出的结构称为“栈”。
2、栈示意图
本文详细介绍了RK3568平台Android11系统中内存管理的各个部分,包括栈、堆、BSS段、Data数据段和代码段。阐述了栈的先进后出特性、堆的动态内存分配以及BSS和Data段在全局变量和静态变量中的作用。同时,讲解了代码段(Text和rodata)的存储规则,并通过代码演示和nm命令展示了内存分布情况。
订阅专栏 解锁全文
2332

被折叠的 条评论
为什么被折叠?



