在Linux 系统内存分配
来源:互联网 发布:java 方法签名是什么 编辑:程序博客网 时间:2024/05/16 18:48
在Linux 系统内存分配
版权声明:本文为博主原创文章,未经博主允许不得转载。
BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。
数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。
代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)
栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区
数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。
代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)
栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区
0 0
- 在Linux 系统内存分配
- 在Linux 系统内存分配
- Linux内存分配--伙伴系统
- Linux系统的内存分配
- Linux系统如何为进程分配内存
- 简述Linux内存分配--伙伴系统 原理
- 如何在linux内核中保留一块内存不被系统分配
- linux内存管理之伙伴系统(内存分配)
- linux内存管理之伙伴系统(内存分配)
- linux内存管理--伙伴系统分配内存准备工作
- Linux系统--从malloc中窥探Linux内存分配策略
- 系统内存分配
- 浅谈c语言内存分配之一(linux系统)
- Linux内核内存分配
- linux内存分配函数
- linux 内存分配函数
- linux 内存分配学习
- linux 内存分配方法
- 关于String s是否默认初始化
- 如何获取手机信号
- 【Java】Java中的数据类型说明
- STM32中断优先级彻底讲解
- 程序设计模式(九) C++ 装饰(Decorator)模式
- 在Linux 系统内存分配
- SQL Server 的所有表查询和注释说明查询
- 深度学习之风格迁移(二)——Fast Neural Style(Johnson)
- spring 事务
- xilinx 浮点数IP核的用法- 浮点数除法
- Subtree of Another Tree问题及解法
- [ElasticSearch2.x]Queries vs Filters
- mysql 使用inet_aton和inet_ntoa处理ip地址数据
- POI导出excel表时,常用到的方法