栈、堆、数据段、代码段的区别

1.栈(stack)

  保存局部变量的,函数结束,其局部变量的生命就结束了(当然是不包括static变量)。即释放了栈的空间(顺便提一下:栈特点为后进先出的!).

  函数return后需要释放栈,函数被调用的时候需要分配栈。

2.堆(heap)是操作系统申请的内存空间,需要程序主动申请,主动释放,绝大多数用到的是动态变量的使用!

3.数据段是存取全局变量何静态变量的。

4.代码段是存取代码的。

在Linux中还存在这一个BBS段!

可参考http://blog.csdn.net/jxhui23/article/details/8064766

时间: 2024-10-09 15:36:33

栈、堆、数据段、代码段的区别的相关文章

C语言之程序中内存的来源:栈 堆 数据段

程序在运行的时候,其内存的来源主要通过三种方法:  栈  堆  数据段,总体上来讲栈是一般用来存放小内存的局部变量,堆内存和数据段的属性很像,在使用的的时候,如果这个变量是伴随程序一直存在则使用全局变量,也就是放在数据段,如果一个变量使用完了就没用了,那么就适合用堆内存(先申请,然后释放即可), 一:栈(stack): 1:栈在使用的时候是编译器自动分配内存空间的,不需要程序员的干涉,其次栈的大小是有限的,所以当我们定义的变量需要大片的内存的时候就不适合使用栈, 2:栈存放的是普通变量,栈的在使

内存分配(堆、栈、BSS、代码段、数据段)

这两天看了马士兵老师的视频.视频中提到了一个万能钥匙.就是了解程序运行中对内存的操作.主要讲了堆.栈.Data.说真的有点晕.看了两遍.也就略懂一二.在这做个小小知道总结 简介 我们程序运行的时候都是放在内存里的.根据静态.成员函数.代码段.对象.等等.放在不同的内存分块里.大概分为5块 1  栈 2  堆 3 BSS段-全局区-(静态区) 4 代码段 5 数据段 栈 存放局部变量.临时变量.声明.返回值.指向堆对象的地址(指针).总之存放一些小的东西.当不需要时候.栈会自动清除.比如一个加法方

代码段中存放数据

1.前面我们写的程序中,只有一个代码段,我们先来在代码段中使用数据,看看和单独一个数据段存放数据有什么差别. 考虑这样一个问题,编程计算以下8个数据的和,结果存放在ax寄存器中: 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H 我们希望循环进行累加,所以要将数据存放在一个连续内存当中,如何将这些数据存储在一组地址连续的内存单元中呢?我们可以用指令一个一个将他们送入地址连续的内存单元,可是这样又存在一个问题,到哪里去找这段内存空间? 从规范的角度讲,

LINUX下目标文件的BSS段、数据段、代码段

http://blog.chinaunix.net/uid-27018250-id-3867588.html bss 未初始化的全局数据 data 已经初始化的全局数据 text 代码段,机器指令 rodata 字符串常量 参考:<程序员自我修养> 代码编译后的机器指令经常被放在代码段里,代码段名为".text";已初始化的全局变量和已初始化的局部静态变量经常放在数据段里,数据段名为".data";未初始化的全局变量和未初始化局部静态变量一般放在“.bs

vs代码段简写知识

Visua Studio代码段基础知识 描述: 代码段是使用上下文菜单命令或者热键(hotkeys)的组合在代码文件中插入的可重用的代码.它们可以插入整个类或方法.能够提高我们开发的效率,节约时间. Visual Studio自带了一些常用的代码段,比如在C#中,插入指定的代码段.就以try finaly为示例. 首先在类中输入tryf,然后连接点击两次Tab键.就会自动生成try finally代码段.如图: 创建代码段 创建代码段必须是XML文件,可以根据创建的代码段文件修改相应的元素和增加

VS 代码段

系统默认代码段 代码段名 描    述 #if 该代码段用#if和#endif命令围绕代码 #region 该代码段用#region和#endregion命令围绕代码 ~ 该代码段插入一个析构函数 attribute 该代码段插入一个定制属性的声明,该定制属性是从System.Attribute派生的一个类 checked 该代码段用一个checked块围绕代码 class 该代码段插入一个类声明 ctor 该代码段插入一个构造函数 cw 该代码段插入一个Console.WriteLine语句

VS中的代码段功能

1.前言 开发人员不喜欢打字.如果你希望提高开发人员的生产力,减少键入的数量,这也同时减少打字稿的数量以及因此产生的编译器错误,这些都极大分散了开发人员的注意力.代码重用是开发人员收集代码的另一个原因.即使单个应用程序也会大量地由小而公共的代码段组成,在几乎每个程序中都会有相同的代码元素:循环.类.异常处理等等.开发人员传统上是对代码进行剪切和粘贴以避免重复键入.但是这具有相当的局限性,包括有限的持久性,应该有更可行的解决方案. 这个解决方案就是在Visual Studio 2005中引入的代码

jsp基础语言-jsp代码段

jsp代码段:是放在<% %>标记之间符合java语言规范的代码片段 格式:<% 代码段 %>  代码段中可以包含用于jsp变量和方法的声明.显示表达式.HTML以及调用JavaBean等,实际运行时会转换为servlet. ch04项目案例: 只显示body中的代码: 结果:http://localhost:8080/ch04/code.jsp 原文地址:https://www.cnblogs.com/heisetianshi/p/10658312.html

BSS段、数据段、代码段、堆与栈

BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域. BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域. 数据段属于静态内存分配. 代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区 域.这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读