`
1、内存简单的分为以下几个部分:
栈区
容量小,存储速度快,适合存储生命周期短的数据,栈中存储变量(局部变量,函数的参数)。特点:先进后出。程序结束后由编译器自动分配释放。
堆区
容量大,存取速度慢,适合储存生命周期长的数据,适合储存对象。适应动态内存分配(malloc)。程序结束后由程序员分配释放。
静态区
存放全局变量、静态变量,初始化的全局变量与静态变量在一块区域,未初始化的静态变量和未初始化的静态变量在相邻的另一块区域,程序结束后由系统释放。
文字常量区
存放常量字符串,程序结束后由系统释放。
程序代码区
存放函数体的二进制代码
`2、“关于栈溢出的解释:
栈具有一定的空间,当你把在栈上的空间用完之后就会出现栈溢出现象。例如:一个瓶子里最多只能装它所容纳的液体,而你非要多装一些,容纳不下,则会溢出。
3、关于数据在内存中的存储方式
1)小端存储:把一个数据的低字节序的内容存储在低地址处,高字节序的内容存储在高地址处。
2)大端存储:把一个数据的高字节序的内容存储在低地址处,高字节序的内容存储在低地址处。要理解这些概念,我们必须知道内存中的地址的排序方式,那它是怎样的呢?
内存中的地址都是从低到高排列的。
举个简单的例子:
比如:11223344
要把这个数字存储在内存中它就有两种方式–假设从左到右的地址是由低到高的
- 44 33 22 11
这就是把这位数的低字节序存储到了低地址处,因此它属于小端存储
-11 22 33 44
-把高字节序存储到了低地址处,则他是大端存储>