关于内存的一点小知识
2017-11-10 15:26
274 查看
`
1、内存简单的分为以下几个部分:
栈区
容量小,存储速度快,适合存储生命周期短的数据,栈中存储变量(局部变量,函数的参数)。特点:先进后出。程序结束后由编译器自动分配释放。
堆区
容量大,存取速度慢,适合储存生命周期长的数据,适合储存对象。适应动态内存分配(malloc)。程序结束后由程序员分配释放。
静态区
存放全局变量、静态变量,初始化的全局变量与静态变量在一块区域,未初始化的静态变量和未初始化的静态变量在相邻的另一块区域,程序结束后由系统释放。
文字常量区
存放常量字符串,程序结束后由系统释放。
程序代码区
存放函数体的二进制代码
`2、“关于栈溢出的解释:
栈具有一定的空间,当你把在栈上的空间用完之后就会出现栈溢出现象。例如:一个瓶子里最多只能装它所容纳的液体,而你非要多装一些,容纳不下,则会溢出。
3、关于数据在内存中的存储方式
1)小端存储:把一个数据的低字节序的内容存储在低地址处,高字节序的内容存储在高地址处。
2)大端存储:把一个数据的高字节序的内容存储在低地址处,高字节序的内容存储在低地址处。
要理解这些概念,我们必须知道内存中的地址的排序方式,那它是怎样的呢?
内存中的地址都是从低到高排列的。
举个简单的例子:
比如:11223344
要把这个数字存储在内存中它就有两种方式
–假设从左到右的地址是由低到高的
- 44 33 22 11
这就是把这位数的低字节序存储到了低地址处,因此它属于小端存储
-11 22 33 44
-把高字节序存储到了低地址处,则他是大端存储>
1、内存简单的分为以下几个部分:
栈区
容量小,存储速度快,适合存储生命周期短的数据,栈中存储变量(局部变量,函数的参数)。特点:先进后出。程序结束后由编译器自动分配释放。
堆区
容量大,存取速度慢,适合储存生命周期长的数据,适合储存对象。适应动态内存分配(malloc)。程序结束后由程序员分配释放。
静态区
存放全局变量、静态变量,初始化的全局变量与静态变量在一块区域,未初始化的静态变量和未初始化的静态变量在相邻的另一块区域,程序结束后由系统释放。
文字常量区
存放常量字符串,程序结束后由系统释放。
程序代码区
存放函数体的二进制代码
`2、“关于栈溢出的解释:
栈具有一定的空间,当你把在栈上的空间用完之后就会出现栈溢出现象。例如:一个瓶子里最多只能装它所容纳的液体,而你非要多装一些,容纳不下,则会溢出。
3、关于数据在内存中的存储方式
1)小端存储:把一个数据的低字节序的内容存储在低地址处,高字节序的内容存储在高地址处。
2)大端存储:把一个数据的高字节序的内容存储在低地址处,高字节序的内容存储在低地址处。
要理解这些概念,我们必须知道内存中的地址的排序方式,那它是怎样的呢?
内存中的地址都是从低到高排列的。
举个简单的例子:
比如:11223344
要把这个数字存储在内存中它就有两种方式
–假设从左到右的地址是由低到高的
- 44 33 22 11
这就是把这位数的低字节序存储到了低地址处,因此它属于小端存储
-11 22 33 44
-把高字节序存储到了低地址处,则他是大端存储>
相关文章推荐
- 关于内存分配的一点小知识
- 关于排序算法的一点知识——性能比较
- 关于C语言程序的内存分配的入门知识学习
- 小知识~关于声明和定义的一点整理
- 关于进程内存使用的一点学习和实践
- 关于dbwr/lgwr的一点知识
- 关于jxl的一点知识
- 关于C/C++内存一点小知识
- 关于sqlServer的一点小知识
- 关于c++内存的一点总结20150603
- 关于C/C++结构体的一点知识
- 关于VB.Net的知识的一点收获
- c/c++关于内存分配的知识
- 关于调用约定(cdecl、fastcall、、thiscall) 的一点知识(用汇编来解释)good
- 关于字符串和内存空间的一些知识
- 关于内存泄露及野指针的一点小总结
- 关于c++检测内存泄露相关知识(windows程序调试)
- 关于dbwr/lgwr的一点知识
- 关于c++检测内存泄露相关知识(windows程序调试)