一个典型的C程序存储空间布局 - C/C
来源:百度文库 编辑:神马文学网 时间:2024/04/25 19:40:04
一个典型的C程序存储空间布局
一个典型的C程序存储空间布局由以下几个部分组成: (正文段):CPU执行的指令部分,也就是主要的程序代码编译出来的结果,只读,通常可以共享。 (初始化数据段):通常称之为数据段,包含了程序中需要明确赋值的变量,譬如一些初始化的全局变量等,
如 int a = 10,变量名和值都存放在这个段中。 (未初始化数据段):通常称之为BSS(Block Started by Symbol)段,包含了程序中没有进行赋值的变量,譬如一些未初始化的全局变量,如 int a,在程序执行之前,内核会把这部分全部置为0(NULL) (栈):stack 自动变量以及每次函数调用时所需保存的信息放在此段中。如函数调用时要保存返回地址等。栈是从上向下分配的。
(堆):heap 通常在堆中进行动态存储分配,如malloc, calloc, realloc等都从这里面分配。堆是从下向上分配的。 通常堆顶和栈底之间的虚拟地址空间是很大的。
对X86处理器上的Linux,正文段从0x08048000开始,栈底则从0xC0000000之下开始。
下图是一个典型的C程序存储空间的逻辑布局:
//main.cpp
int a = 0; 全局初始化区
char *p1; 全局未初始化区
main()
{
int b; 栈
char s[] = "abc"; 栈
char *p2; 栈
char *p3 = "123456"; 123456\0在常量区,p3在栈上。
static int c =0; 全局(静态)初始化区
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
分配得来得10和20字节的区域就在堆区。
strcpy(p1, "123456"); 123456\0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。
}
本篇文章来源于 开发学院 http://edu.codepub.com/ 原文链接:http://edu.codepub.com/2009/0617/6508.php
一个典型的C程序存储空间布局由以下几个部分组成: (正文段):CPU执行的指令部分,也就是主要的程序代码编译出来的结果,只读,通常可以共享。 (初始化数据段):通常称之为数据段,包含了程序中需要明确赋值的变量,譬如一些初始化的全局变量等,
如 int a = 10,变量名和值都存放在这个段中。 (未初始化数据段):通常称之为BSS(Block Started by Symbol)段,包含了程序中没有进行赋值的变量,譬如一些未初始化的全局变量,如 int a,在程序执行之前,内核会把这部分全部置为0(NULL) (栈):stack 自动变量以及每次函数调用时所需保存的信息放在此段中。如函数调用时要保存返回地址等。栈是从上向下分配的。
(堆):heap 通常在堆中进行动态存储分配,如malloc, calloc, realloc等都从这里面分配。堆是从下向上分配的。 通常堆顶和栈底之间的虚拟地址空间是很大的。
对X86处理器上的Linux,正文段从0x08048000开始,栈底则从0xC0000000之下开始。
下图是一个典型的C程序存储空间的逻辑布局:
//main.cpp
int a = 0; 全局初始化区
char *p1; 全局未初始化区
main()
{
int b; 栈
char s[] = "abc"; 栈
char *p2; 栈
char *p3 = "123456"; 123456\0在常量区,p3在栈上。
static int c =0; 全局(静态)初始化区
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
分配得来得10和20字节的区域就在堆区。
strcpy(p1, "123456"); 123456\0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。
}
本篇文章来源于 开发学院 http://edu.codepub.com/ 原文链接:http://edu.codepub.com/2009/0617/6508.php
一个典型的C程序存储空间布局 - C/C
简单的C程序
C程序源代码1
经典c程序
经典c程序
c语言程序
c语言程序
[程序宝典]经典c程序
[程序宝典]经典c程序
[程序宝典]经典c程序
C程序汉字显示技术 那一章的源代码 C/C
C语言程序的内存分配方式
的一百个c语言小程序
C/C 中一个简单的enum手法(idiom)
C语言经典程序举例
C程序源代码(3)rthrthrth
用C编写mex程序
内存对齐与ANSI C中struct型数据的内存布局(转贴) - C&C - 中国代码...
典型的(C) 智慧的思考者
[程序宝典]经典c程序1
谁有《C 高级实用程序设计》- C程序汉字显示技术 那一章的源代码 C/C / 非技术区 - CSDN社区 community.csdn.net
C/C++编译的程序占用内存的划分
C程序的运行环境 - rocky的日志 - 网易博客
写好C程序的秘籍 - c++学习专区