博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言内存空间的使用--内存分布图
阅读量:7210 次
发布时间:2019-06-29

本文共 892 字,大约阅读时间需要 2 分钟。

hot3.png

内存分布图

 //  内核空间    应用程序不许访问------------------------------- 3G  栈空间      局部变量           RW-----------  运行时的堆空间 malloc-----------  全局的数据空间 全局变量(又可以分为:初始化的,未初始化)static RW位置: 初始化data 未初始化和static bss   只读数据段    "hello" 字符串常量    R        const         位置:  TEXT  代码段        code                R                      位置:  TEXT------------ 0x0 :

 

一个由C/C++编译的程序占用的内存分为以下几个部分  

 

     1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其  

  操作方式类似于数据结构中的栈。  

  

    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回  

  收   。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。  

 int a[5];     malloc(5*sizeof(int))
char *p; p = (char *)malloc(100);if(p == NULL){  error}典型内存泄漏。p赋值没释放void fun(){  char *p;   p = (char *)malloc(100);  return ;} 释放: free(p);

 

3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的  

  全局变量和静态变量在一块区域,   未初始化的全局变量和未初始化的静态变量在相邻的另  

  一块区域。   -   程序结束后由系统释放。  

     

     4、文字常量区   —常量字符串就是放在这里的。   程序结束后由系统释放  

 

     5、程序代码区—存放函数体的二进制代码。

转载于:https://my.oschina.net/u/2346786/blog/497082

你可能感兴趣的文章
IL系列文章之二:Make Best Use of Our Tools
查看>>
Apache Ant使用过程的总结
查看>>
ES 相似度算法设置(续)
查看>>
oc73--NSArray使用
查看>>
Backbone.js入门学习资源
查看>>
类型转化:float -> DWORD
查看>>
Android自定义视图二:如何绘制内容
查看>>
Python天天美味(21) - httplib,smtplib
查看>>
第 37 章 ACOS - CLI
查看>>
Lock-Free 编程
查看>>
7.3. 查看命令
查看>>
解决Wamp 开启vhost localhost 提示 403 Forbbiden 的问题!
查看>>
[WinAPI] API 14 [获取、设置文件属性和时间]
查看>>
AutoCompleteTextView 和 TextWatcher 详解
查看>>
2.5. SciTE
查看>>
喵哈哈村的魔法考试 Round #1 (Div.2) 题解&源码(A.水+暴力,B.dp+栈)
查看>>
【转载】Java 内存分配全面浅析
查看>>
【Android】监听Notification被清除
查看>>
jQuery动态五星评分
查看>>
自制简单表单验证relative与absolute定位
查看>>