#include <iostream>
using namespace std; int a = ;//初始化的全局变量:保存在数据段
char *p1;//未初始化的全局变量:保存在BSS段 int main()
{
int b;//未初始化的局部变量:保存在栈上
char s[] = "abc";//"abc"为字符串常量保存在常量区;数组保存在栈上,
并将常量区的"abc\0"复制到该数组中。这个数组可以随意修改而不会有任何隐患,
而""这个字符串依然会保留在静态区中。 char *p2;//p2保存在栈上
char *p3 = "";//p3保存在栈上,"123456\0"保存在data区的read-only部分
//注意:如果令p3[1] = 9; 则程序崩溃,指针可以访问但不允许改变常量区的内容
//声明了一个指针p3并指向"123456\0"在静态区中的地址,事实上,p3应该声明为
char const *,以免可以通过p3[i]='\n'这一类的语法去修改这个字符串的内容。如果这样
做了,在支持“常量区”的系统中可能会导致异常,在“合并相同字符串”的编译方法下会导致其它
地方的字符串常量古怪地发生变化。 static int c = ;//初始化的静态局部变量:保存在数据区(数据段) p1 = (char *)malloc(sizeof(char) * );//分配的10字节区域保存在堆上
p2 = (char *)malloc(sizeof(char) * );//分配的20字节区域保存在堆上 strcpy(p1, "");
//"123456\0"放在常量区,编译器可能会将它与p3所指向"123456"优化成一个地方 return ;
}

BSS段 :通常是指用来存放程序中 未初始化的全局变量、静态变量(全局变量未初始化时默认为0)的一块内存区域

数据段 :通常是指用来存放程序中 初始化后的全局变量和静态变量

代码段 :通常是指用来存放程序中 代码和常量

堆 :通常是指用来存放程序中 进程运行时被动态分配的内存段 ( 动态分配:malloc / new,者动态释放:free / delete)

栈 :通常是指用来存放程序中 用户临时创建的局部变量、函数形参、数组(局部变量未初始化则默认为垃圾值)

C++——代码运行过程详解的更多相关文章

  1. Java编译程序和运行过程详解

    java整个编译以及运行的过程相当繁琐,我就举一个简单的例子说明: 编译原理简单过程:词法分析 --> 语法分析 --> 语义分析和中间代码生成 --> 优化 --> 目标代码 ...

  2. hive UDAF开发入门和运行过程详解(转)

    介绍 hive的用户自定义聚合函数(UDAF)是一个很好的功能,集成了先进的数据处理.hive有两种UDAF:简单和通用.顾名思义,简单的UDAF,写的相当简单的,但因为使用Java反射导致性能损失, ...

  3. Servlet运行过程详解

    比如,在浏览器地址栏输入http://ip:port/web01/hello step1,浏览器依据ip,port建立与servlet容器(容器同时也是一个简单的web服务器)之间的连接. step2 ...

  4. ASP.NET 运行时详解 揭开请求过程神秘面纱

    对于ASP.NET开发,排在前五的话题离不开请求生命周期.像什么Cache.身份认证.Role管理.Routing映射,微软到底在请求过程中干了哪些隐秘的事,现在是时候揭晓了.抛开乌云见晴天,接下来就 ...

  5. Hadoop MapReduce执行过程详解(带hadoop例子)

    https://my.oschina.net/itblog/blog/275294 摘要: 本文通过一个例子,详细介绍Hadoop 的 MapReduce过程. 分析MapReduce执行过程 Map ...

  6. cocos2dx-3.x 导出自定义类到 lua 过程详解

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.简介 最近正在学习cocos2d中的lua游戏开发,因为lua开发的热更新特性,大家开发游戏好像都会优先选择lua作为 ...

  7. ASP.NET运行时详解 集成模式和经典模式

    遗留问题 在<ASP.NET运行时详解 生命周期入口分析>中遗留两个问题,包括Application的InitInternal方法执行细节.IIS6和II7经典模式请求管道管理类Appli ...

  8. 转载:C/C++源代码到可执行程序的过程详解

    C/C++源代码到可执行程序的过程详解 编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格 ...

  9. Android编译过程详解(一)

    Android编译过程详解(一) 注:本文转载自Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359 ...

随机推荐

  1. Automating CSS Regression Testing

    The following is a guest post by Garris Shipon . We've touched on the four types of CSS testing here ...

  2. GCC用法

    http://www.cnblogs.com/hibernate6/archive/2010/08/24/2522057.html

  3. js 正则表达式符号含义

    \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对正则表达式功 ...

  4. 关于php user ini 文件的配置笔记 (TODO)

    关于 user ini 文件的配置笔记 在使用 宝塔建网站时如果选中防跨域攻击就会在 项目目录生成 .user.ini 这里面是关于 open_basedir 的路径.

  5. Ipython notebook 一些技巧

    在模块后面输入:?,运行可以显示说明: 输入:??,运行可以显示源代码. 输入%matplotlib inline将matplotlib库导入,要显示的图片就可以嵌入到网页中了 %prun用于代码的执 ...

  6. RK3288 添加WiFi&BT模块AP6212

    CPU:RK3288 系统:Android 5.1 注:系统中自带的模块没有AP6212,相近的只有AP6210,设置为AP6210,直接添加固件也可以正常使用. 此文是手动添加AP6212的例程. ...

  7. Hibernate学习4—关联关系一对多映射2

    第四节:班级学生一对多映射实现(双向) 查询班级的时候能够获取所有的学生:   在上一节的基础之上:我们在Class端也保存学生的关系: com.cy.model.Class: public clas ...

  8. Docker学习总结(二)—— 镜像,容器

    1.Docker镜像  1.1相关概念:registry :用于保存Docker镜像,包括镜像层次结构和镜像元数据,类似于git仓库之类的实体. repository:某个Docker镜像所有迭代版本 ...

  9. WP8 MVVM设计模式

    类似了Android里边的MVC模式, Windows Phone 有自己的Model-View-ViewModel模式,这种模式的作用就是为了Data和UI分离开来. 如果你英文较好的话,你可以不再 ...

  10. Asp.net mvc validaterequest无效的问题

    在普通的asp.net下,可以通过在页面上注明 validateRequest=“false" 这个选项来关闭请求对注入攻击的验证,但在mvc下则不行.而且,在asp.net 4.0下,哪怕 ...