1.引言

相信经常用VC的朋友对屏幕输出的一大堆“烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫”不会陌生,但是也许会很奇怪,为什么会出现“烫”字呢?莫非改程序导致系统运行缓慢,发热过高???非也!下面解释一下,有错误的地方请指正:

如果逆向Debug模式下一个C程序,发现栈区开辟的存储空间都是使用0CCCCCCCCh来填充4字节单位的,也就是说,栈区开辟的存取局部变量的空间的每一个字节都被0xCC填充了(为什么用0xCC,这个是int 3h的机器码,下断点用的)两个0xCC合起来输出时恰好对应中文“烫”字

这也就不奇怪程序输出那么多“烫”了。

2.实例演示

实例一:

#include "stdafx.h"
#include <string.h>int _tmain(int argc, _TCHAR* argv[])
{char s[256] = {0};        // 定义一个数组memset(s, 0xCC, sizeof(s));    // 用0xCC填充printf("%s\n", s);      // 输出return 1;
}

查看运行结果:

程序输出结果

实例二:

#include "stdafx.h"
#include <string.h>int _tmain(int argc, _TCHAR* argv[])
{char s[256];               // 系统默认用0xCC填充printf("%s\n", s);          // 输出return 1;
}

程序输出还是”很烫“。

实例三:把字符数组定义为全局变量

#include "stdafx.h"
#include <string.h>char s[256];   // 全局变量int _tmain(int argc, _TCHAR* argv[])
{printf("%s\n", s);           // 输出return 1;
}

这次系统输出了空,没有烫了!为什么???
其实,全局变量分配在”全局/静态存储区“中,局部变量分配在栈中,我们可以定义一个很大的数组,如果是局部的,会导致程序栈溢出,因为栈的空间大小是有限制的;而全局的则不会。
另外需要注意,这些”烫烫烫烫烫烫烫“现象只会在Debug模式中出现,在Release模式中不会出现。

如果你对”烫烫烫烫烫烫烫“表示很熟悉,那么”屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯“你见过吗?应该吧。我本人以前经常遇到”烫“,但很少遇到后者。

实例四:动态分配内存空间

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>int main(int argc, char* argv[])
{char *s = (char *)malloc(sizeof(char) * 256);puts(s);free(s);return 0;
}

运行程序,顿时满屏的”屯“字出现在眼前,有图有真相:

程序输出结果

因为,动态分配的空间开辟于堆,VC的Debug用0xCD填充堆的空间,两个0xCD和在一起就是屯了。

你很烫吗?我很烫——关于栈区和静态存储区的思考相关推荐

  1. 计算机在运行表格的时候很慢,打开excel很慢_EXCEL表格打开反应太慢时什么原因...

    电脑打开excel很慢怎么办 1.Win+R,打开运行 2.输入regedit,打开注册表 3.HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open (默认)和com ...

  2. 世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?

    来自公众号:五分钟学算法 今天分享四个代码量很少,但很牛逼很经典的算法或项目案例. 1.no code 项目地址: https://github.com/kelseyhightower/nocode ...

  3. 美国诚实签经验——中英文行程单、往返机票、用英语面试的申请者通过率用中文面试的申请者的通过率、一直保持着微笑,看上去很自信,也很诚恳、户口簿带上最好...

    在排队等待时据我的观察,用英语面试的申请者通过率>用中文面试的申请者的通过率.一家人申请通过率>单个人通过率:商务签证通过率>旅游签证通过率 一.    面签材料 1.    必备材 ...

  4. 【机器人】“市场很冷,从业者很拼” | 众多国内机器人厂商热议当前市场状态|人工智能...

    导LEAD读 产品趋于同质,价格竞争白热化,制造业上下游共同挤压,风险投资愈发谨慎--在经历了近十年的快速发展之后,机器人产业在2018年遭遇了槛儿,业内企业感受到前所未有的压力. "市场很 ...

  5. java 跨平台很鸡肋,Mac 篇八:Mac上的这个软件看起来很鸡肋,其实很牛很强大

    Mac 篇八:Mac上的这个软件看起来很鸡肋,其实很牛很强大 2019-11-26 11:37:36 8点赞 42收藏 1评论 用了很多年Mac,可能这个应用都没有注意到,看起来不起眼,其实用好它,不 ...

  6. jQuery Mobile使用中遇到的坑!填坑很难,但很有成就感。。

    jQuery Mobile使用中遇到的坑!填坑很难,但很有成就感.. 最近参与到一个项目的前端开发中,为了提高用户体验使用到了jQuery Mobile.主要是用到了页面过渡效果,这种效果可以做到页面 ...

  7. 那些看来很朴实,却很有趣,很有爱的签名

    那些看来很朴实,却很有趣,很有爱的签名 -----整理选摘自天涯论坛 11点半之后睡觉,果然会饿的. 理论上咱们都是文明人,给点面子萨. 就着红牛啃馒头,通宵干论文 不准再问我:最近过的怎么样?! 从 ...

  8. 【干货】《小群效应》徐志斌:亲密关系就是“超级信任”、“我很可亲”和“我很可爱”...

    随着互联网飞速发展,公域流量的增长进入滞缓期,大到电商平台小到个体,都开始重视私域流量营销,一系列新工具和玩法层出不穷,"裂变营销"."超级用户"等热词也逐渐走 ...

  9. 中国美酷国际集团《创囧》逐梦很难但坚持很燃

    以"逐梦很难但坚持很燃"为主题的微电影<创囧>系列之<曙光>自2018年12月17日开机以来,颇受多方关注.美酷<创囧>为什么这么受欢迎?究其原 ...

最新文章

  1. Delphi XE2 之 FireMonkey 入门(37) - 控件基础: TControl 概览
  2. proxychains 使用指北
  3. 提升 .NET 程序性能的 一些 原则
  4. centos根分区扩容方法linux公社,Centos5给/根分区扩容
  5. php支持二级域名共享,PHP二级域名session共享方案
  6. Java中static作用及用法详解
  7. ubuntu 下重装mysql若干问题
  8. Matplotlib 中文用户指南 3.1 pyplot 教程
  9. 成为一名专业的前端开发人员,需要学习什么?
  10. Jmeter下载安装配置
  11. 网上流行的经典马屁回帖
  12. 个人笔记-Nginx学习常见错误
  13. Java字符流拷贝/复制文本文件,字节流拷贝文本文件乱码,很经典简便
  14. Minimal Viable Plasma
  15. C# WinForm打开PDF文件
  16. Ae 表达式语言引用​:Comp
  17. 文本生成图像这么火,你需要了解这些技术的演变
  18. 创新、创业,风险投资介绍。附:2019年热门风险投资人 ( VCPE )
  19. 【青龙面板】返利好省
  20. 设计师必备!超好用的MAC电脑网页设计师软件

热门文章

  1. 需要我们了解的SQL Server阻塞原因与解决方法 - sym_cn
  2. 53亿美元,今年最大一笔杠杆并购案!为什么会是它?
  3. 转载一篇NAT实验,备忘
  4. 提升网络可靠性的双网卡绑定7种模式
  5. 散度、旋度与 Laplacian
  6. 【转】.NET NPOI操作Excel常用函数
  7. linux 系统工程师 面试 开放式问答
  8. LeetCode 70. 爬楼梯(Climbing Stairs)
  9. ML激活函数使用法则
  10. C#.NET 大型企业信息化系统 - 防黑客攻击 - SSO系统加固优化经验分享