C语言存储区域

有错误请指教

1.文字常量区域  存储在 代码段   不能被修改

2.全局变量  静态存储区  存储在  数据段

3.函数中的局部变量 存储在  栈中

4.malloc  new  中的变量存储在  堆中间

测试  函数  转载  http://blog.csdn.net/u010070526/article/details/41748043

  1. int a = 0; //全局初始化区
  2. char *p1; //全局未初始化区
  3. int main() {
  4. int b; //栈
  5. char s[] = "abc"; //栈
  6. char *p2; //栈
  7. char *p3 = "123456"; //123456在常量区,p3在栈上。
  8. static int c =0;//全局(静态)初始化区
  9. p1 = new char[10];
  10. p2 = new char[20];
  11. //分配得来得和字节的区域就在堆区。
  12. strcpy(p1, "123456"); //123456放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。
  13. }
时间: 2024-10-19 01:55:51

C语言存储区域的相关文章

C语言5种存储区域

C语言5种存储区域 转发至:http://www.mamicode.com/info-detail-927635.html 系统为了管理内存 把内存划分了几个区域 1> 栈区 栈区之中的数据在栈区之中以栈的形式进行存储. 栈区的特点:数据是先进后出, 放在栈区里面存放的是局部变量.(例如定义在函数内部的变量) 栈区之中的数据(局部变量)的作用范围过了之后,系统就会回收自动管理栈区的内存(分配内存 , 回收内存),不需要开发人员来手动管理 2> 堆区 高效的使用内存 这里的内存可以由程序员自己手

C语言存储类别和链接

目录 C语言存储类别和链接 存储类别 存储期 五种存储类别 C语言存储类别和链接 ? 最近详细的复习C语言,看到存储类别的时候总感觉一些概念模糊不清,现在认真的梳理一下.C语言的优势之一能够让程序员恰到好处的控制程序,可以通过C语言的内存管理系统指定变量的作用域和生存周期,实现对程序的控制. 存储类别 基本概念 对象:在C语言中所有的数据都会被存储到内存中,被存储的值会占用一定的物理内存,这样的一块内存被称为对象,它可以储存一个或者多个值,在储存适当的值时一定具有相应的大小.(C语言对象不同于面

C/C++程序内存的各种变量存储区域和各个区域详解

转自 https://blog.csdn.net/jirryzhang/article/details/79518408 C语言在内存中一共分为如下几个区域,分别是: 1. 内存栈区: 存放局部变量名:2. 内存堆区: 存放new或者malloc出来的对象:3. 常数区: 存放局部变量或者全局变量的值:4. 静态区: 用于存放全局变量或者静态变量:5. 代码区:二进制代码.知道如上一些内存分配机制,有助于我们理解指针的概念. C/C++不提供垃圾回收机制,因此需要对堆中的数据进行及时销毁,防止内

block存储区域——如何验证block在栈上,还是堆上

block存储区域 这就需要引入三个名词: ● _NSConcretStackBlock ● _NSConcretGlobalBlock ● _NSConcretMallocBlock 正如它们名字说的那样,说明了block的三种存储方式:栈.全局.堆. [要点1]定义在函数外面的block是global的:另外如果函数内部的block,但是没有捕获任何自动变量,那么它也是全局的.比如下面这样的代码: typedef int (^blk_t)(int); for(...){ blk_t blk

C语言--存储类、链接和内存管理

注:此文为<C Primer Plus>一书中的部分总结,写下来方便以后参考. 用于存储程序数据的内存可用存储时期.作用域和链接来表征. 存储时期可以使静态的.自动的或者分配的.①如果是静态的,内存在程序开始执行时被分配,并行程序运行时一直存在.②如果是自动的,变量所用内存在程序执行到该变量定义所在代码块时开始分配,在退出代码块时释放.③如果是分配的内存,内存通过调用malloc()(或其他相关函数)分配,通过调用函数free()释放. 作用域决定哪一部分程序可以访问某个数据.在所有函数之外定

存储区域

前言:类型定义后,存储在哪里?变量定义后存储在哪里?程序代码存储在哪里? 1. 全局数据区和程序代码区 类型定义后,存在内存的只读区域,不可见,无法取得地址.类变量记录的是地址偏移,与对象绑定才能取得地址. 变量: 全局变量存在全局数据区,全局静态变量存在全局数据区的全局静态变量段.(两者相临或相差几个字节). 名空间变量存在全局数据区,和全局变量同一存储区域,名空间静态变量存在全局数据区的名空间静态变量段,和全局静态变量同一存储区域. 类变量名称列表中记录的是地址偏移,和对象绑定才能取得地址.

C语言存储模型

描述方法(三个方面) 作用域 代码块.函数原型 文件作用域 链接类型 外部链接 内部链接 空链接 存储时期 静态存储时期 动态存储时期 变量类型 变量存储类型 作用域 链接类型 存储时期 C语言存储模型(类) 文件 外部 静态 具有外部链接的静态 内部(static) 具有内部链接的静态 代码块 无链接 静态(static) 空链接静态变量 动态 自动变量 寄存器(性质与自动变量类似,存储在寄存器中) 寄存器 注: 具有外部链接的在其他文件使用前必须以exturn声明 具有静态存储期的变量必须使

C++内存存储区域的划分

C++内存存储区域划分 面试笔试常考 内存中对数据的存储不是杂乱无章的,而是有相应的划分,根据数据类型分门别类安放到相应的位置. 存储的区域由最高存储地址到最低存储地址依次为: 命令行参数区:命令行参数和环境变量: 栈区(stack):指那些由编译器需要的时候分配,在不需要的时候自动清除的变量的存储区域.里面的变量通常是函数的参数值.局部变量等值,其操作方式类似于数据结构中的栈. 堆区(heap):动态分配内存.一般由程序员分配释放,若程序员不释放掉,在程序结束后,操作系统可能会自动回收.它与数

Block存储区域

Block存储区域 首先,需要引入三个名词: ● _NSConcretStackBlock ● _NSConcretGlobalBlock ● _NSConcretMallocBlock 正如它们名字显示得一样,表明了block的三种存储方式:栈.全局.堆.block对象中的isa的值就是上面其中一个,下面开始说明哪种block存储在栈.堆.全局. ------------[要点1]:全局block------------ ● 定义在函数外面的block是global类型的 ● 定义在函数内部的