参考"http://blog.sina.com.cn/s/blog_63d4849c01014qg3.html"

C语言内存分为5部分:堆、栈、全局(静态)区、常量区(只读)和代码区。

堆,需要人工申请和释放内存,其他均为系统自动释放。

全局(静态)区、常量区:全局可见!

#include <stdio.h>
#include <malloc.h> int a=;//初始化全局变量,存在“全局(静态)区(data)初始化”中,程序结束后由系统释放
char *p1;//未初始化全局变量,存在“全局(静态)区(data)未初始化”中,程序结束后由系统释放
int main()
{
int i=;//局部变量,存在“栈”,{}之后系统自动销毁
char s[]="abcde";//局部变量,存在“栈”中
char *p2;//局部变量,存在“栈”中
char *p3="abcde";//p3存在“栈”中;"abcde"存在“常量区”,程序结束后由系统释放
char *p4=s;
char s2[]={,,};
static int c=;//存在“全局(静态)区(data)初始化”
//下面分配的均为“堆”区
p1=(char*)malloc();
p2=(char*)malloc(); s[]='d';//局部变量可以修改
*p4='d';//可以修改
// *p3='d'; 报错,说明字符串常量存在只读数据段中,不能修改
printf("s[%d]=%c\n",i,s[i]);
printf("p3[%d]=%c\n",i,*(p3+i));
printf("p4[%d]=%c\n",i,*(p4+i));
getchar();
return ;
}

【C语言】C语言程序所占内存分类的更多相关文章

  1. Hybrid App是如何实现网页语言与程序语言的混合?谁占主体?

    [编者按]本文作者@徐珂铭,一位看好Html5的移动互联网的从业人士.喜爱玩技术,会点JAVA.HTML及CSS,有自己的想法及姑且能表达想法的文字,因此有了自己的文章. 基于HTML5的Web Ap ...

  2. 一起talk C栗子吧(第一百三十一回:C语言实例--C程序内存布局三)

    各位看官们,大家好.上一回中咱们说的是C程序内存布局的样例,这一回咱们继续说该样例.闲话休提,言归正转.让我们一起talk C栗子吧. 看官们,关于C程序内存布局的样例,我们在前面的两个章回都介绍过了 ...

  3. c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针

    1.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内浅显的例子就不举了,这里举几个比较隐蔽的例子. 1.1结构体成员指针未初始化 struct stude ...

  4. C/C++语言简介之程序结构

    C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数.因此, ...

  5. [c语言]c语言中的内存分配[转]

    在任何程序设计环境及语言中,内存管理都十分重要.在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的.因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题. 第1节主要介绍内存管理基本概念,重 ...

  6. 用C++语言开发Android程序 配置开发环境

    转自:http://www.cnblogs.com/yaotong/p/3622430.html 用C++语言开发Android程序 配置开发环境   如果你是一个C++语言的死忠,你喜欢C++语言到 ...

  7. 从硬件到语言,详解C++的内存对齐(memory alignment)

    转载请保留以下声明 作者:赵宗晟 出处:https://www.cnblogs.com/zhao-zongsheng/p/9099603.html 很多写C/C++的人都知道“内存对齐”的概念以及规则 ...

  8. 从硬件到语言,详解C++的内存对齐(memory alignment)(一)

    作者:赵宗晟 出处:https://www.cnblogs.com/zhao-zongsheng/p/9099603.html 很多写C/C++的人都知道“内存对齐”的概念以及规则,但不一定对他有很深 ...

  9. 6个变态的C语言Hello World程序

    6个变态的C语言Hello World程序   下面的六个程序片段主要完成这些事情: 输出Hello, World 混乱C语言的源代码 下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C+ ...

随机推荐

  1. iOS:CoreData数据库的使用一(创建单个数据库表)

    CoreData数据库框架:mac系统自带的数据库,它是苹果公司对sqlite进行封装而来的,既提供了对数据库的主要操作,也提供了具体的视图关系模型. 需要用到三个对象: 1•Managed Obje ...

  2. SRM 212 Div II Level Two: WinningRecord,Brute Force

    题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=3003&rd=5858 比较简单. 代码如下: #inc ...

  3. 一些LR的经验,讲的还不错

    https://blog.csdn.net/Dinosoft/article/details/50492309 记录一下.

  4. 文字尺寸、宽高的测量 Paint FontMetrics

    Paint.FontMetrics类简介 Google文档中的描述: ) throw new IndexOutOfBoundsException(); if (bounds == null) thro ...

  5. JAVA反射使用手记

    本篇文章为在工作中使用JAVA反射的经验总结,也可以说是一些小技巧,以后学会新的小技巧,会不断更新.本文不准备讨论JAVA反射的机制,网上有很多,大家随便google一下就可以了. 在开始之前,我先定 ...

  6. 【Linux】Dockerfile,ubuntu默认shell不是bash?RUN source命令报错!

    Dash is not bash 在一些 docker 官方 Image 中,执行一些 .sh 文件的时候遇到了一些奇怪现象,比如: 1 2 3 # Run something like: [[ $A ...

  7. M.2接口NVMe协议的固态硬盘读写速度是SATA接口的两倍

    原文:https://www.sohu.com/a/203688929_615464 中午走路的时候,同事说的,M 2 nvme接口的更快. 树莓派开发板可以跑linux . ------------ ...

  8. Android Studio中mac上面的安装

    Android Studio中mac上面的安装 学习了:https://blog.csdn.net/xianrenli38/article/details/79347170 http://www.an ...

  9. [Grunt] Development Automation Tasks with Grunt

    With Grunt you can automate core tasks for your AngularJS project. In this lesson we will take a loo ...

  10. python分号使用

    一:python分号使用 每一条语句最后个加个分号:这是c,oc,java,php等语言中不可缺少的部分,但是对于python,分号是可加,可不加的 如:不加分号代码 >>> cla ...