C语言中关于哪些数据放在哪些区?

原创 2015年07月09日 18:51:39

上图是用手机拍摄的Unix环境高级编程中第二版中第七章的内容。

一个程序分为几个区,可以从图中明显看到。需要说明的是,stack区是从第1GByte地址处以下开始,第1GByte地址处到stack开始的地方,是命令行参数和环境列表的存储区。

需要解释的是,初始化数据区和非初始化数据区,两者在其他的书中都称为数据区,data区。其中,程序中的已经初始化的数据区里面又含有多种类型的数据存放。比如静态变量存储区static ,全局变量存储区global, 字符串区 等等。

关于字符串的不同存储方式,请参考下面的一个连接:

http://www.geeksforgeeks.org/storage-for-strings-in-c/

如果在一个函数中,char str[] = "ABCD"; 那么,str是放在函数的栈空间中的,字符串"ABCD"也是放在栈空间中的。

如果在一个函数中,char *str = "ABCD";  那么,str是放在栈空间中的,而字符串是放在data区的read-only部分。

如果在一个函数中,char *str = (char *)malloc(sizeof(char)*size);  *(str+0) = 'A'; ... 那么,str是放在栈空间中的,而字符串是放在堆空间中的。

Note that: 第二种的字符串是不可以更改的!

C语言的内存管理分析 栈区 代码区 堆区 静态区 常量区

系统为了管理内存 把内存划分了几个区域      1> 栈区      栈区之中的数据在栈区之中以栈的形式进行存储.      栈区的特点:数据是先进后出,      放在栈区里...
  • u010672206
  • u010672206
  • 2015年07月18日 22:47
  • 1462

你的数据存放在哪

计算机三大组成部分:CPU  内存  硬盘   内存与硬盘的区别:内存保存动态数据,断电就会丢失,存放的是运行的数据。而硬盘保存动态数据,断电不丢失,存放的是静态的数据。     内存是共享设备,是稀...
  • qq_36562473
  • qq_36562473
  • 2016年11月28日 09:09
  • 200

c语言分配内存方式有哪些?c语言中常见的内存错误有哪些?

内存分配方式有三种:   1、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。   2、在栈上创建。在执行函数时,函数内局...
  • Fanxing1391
  • Fanxing1391
  • 2018年01月26日 10:47
  • 39

C语言中变量存储类型有哪些?

变量的存储类型是C语言的重要组成部分,也是C语言学习的基础。那C语言中变量的存储类型有哪几种呢?在编程过程中又该怎样运用呢?就这一问题,我今天给大家介绍一下!总的来说,C语言中变量的存储类型可以分为四...
  • bentengdehe
  • bentengdehe
  • 2016年05月10日 17:22
  • 1326

C语言的那些小秘密之堆栈

在讲解堆栈之前,我们先要来说说其实我们常说的堆栈是两种数据结构。那么什么是堆什么又是栈呢?       栈,是硬件。主要作用表现为一种数据结构,是只能在某一端插入和删除的特殊线性表。它按照后进先出的原...
  • bigloomy
  • bigloomy
  • 2011年07月04日 15:37
  • 7143

C语言之数组、内存地址

#include int main() { /*_______________内存地址_________________*/ int a = 2; // /打印a的内存地址,使用&取出内...
  • pengyuan_D
  • pengyuan_D
  • 2014年10月21日 11:51
  • 773

C语言中变量的存储类型与初始化

存储类型变量的存储类型决定变量何时创建,何时销毁,以及变量的值保持多久。有三个地方可以存储变量: 普通内存 运行时堆栈 硬件寄存器 变量的默认存储位置取决于它的声明位置。静态变量在代码块外声明的变量总...
  • wy_ei
  • wy_ei
  • 2015年03月08日 19:41
  • 851

c语言中预处理命令都有哪些

按照ANSI标准的定义,预处理程序应该处理以下指令: #if #ifdef #ifndef #else #elif #endif #define #undef #line #err...
  • maochengtao
  • maochengtao
  • 2013年04月23日 21:17
  • 537

数据存在哪里Java

计算机中可以存放数据的地方有:内存,硬盘,寄存器。 Registers:速度最快的存储场所。因为寄存器位于处理器内部,这一点和其他类的存储媒介都不一样。由于寄存器数量有限,所以编译器会根据本身需求适当...
  • minyangchina
  • minyangchina
  • 2010年03月28日 19:01
  • 531

数据的压缩存储与解压缩算法实现(C语言)

在一些嵌入式的项目设计中,空间是相当宝贵的,因为一个CPU的存储是有限的,所以此时我们在保存数据的时候,喜欢来进行压缩保存,著名的有哈夫曼树算法,专门用来做压缩的算法,当然,本节我们不讨论这些稍微高级...
  • morixinguan
  • morixinguan
  • 2016年07月26日 14:55
  • 4388
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言中关于哪些数据放在哪些区?
举报原因:
原因补充:

(最多只允许输入30个字)