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语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)

经常看到uboot里面有清bbs段.一直都不明白,bbs段是什么东西,为什么要清,有什么作用. 还有其他段,都是些什么关系。 c语言中总体来说,分两种情况:1.编译出来可执行文件放在存储盘上...

c语言程序的存储区域与const关键字的使用方法

一.C语言程序的存储区域 1.由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,...

C_3:c语言的内存

可执行文件编译源代码后的目标文件( *.o 文件 ) 可执行文件( windows=.exe; linux=.ELF)代码段+数据段+未初始化数据段 代码段(text): 存放CPU执行的指令代码...

C语言:数据类型、存储区字节数、占位符、sizeof、输入输出、二进制相关、操作符(++,--)、主函数参数

数据类型:         字符类型-------char:256个数字[-128,127]                                             每个数...

C语言(9)--获得缓存区中的输入数据、趣味转义字符

1、获得缓存区中的输入数据2、趣味转义字符
  • Ramay7
  • Ramay7
  • 2015年09月02日 15:02
  • 886

C语言拾遗:数据区,代码区,堆区,栈区

转自:http://blog.csdn.net/yinwei520/article/details/6006054 一般全局变量存放在数据区,局部变量存放在栈区,  动态变量存放在...

数据结构习题答案(C语言版)

  • 2017年12月07日 17:20
  • 1.64MB
  • 下载

C语言中基本数据类型细节

期中计组考完后,虽然成绩惨不忍睹,但暴露了一些一直以来不懂但又没暴露出来的问题,在此总结。 补码Select the two’s complement negation of the followin...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言中关于哪些数据放在哪些区?
举报原因:
原因补充:

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