文档章节

C语言内存空间的使用--内存分布图

Ethan-GOGO
 Ethan-GOGO
发布于 2015/08/25 22:41
字数 409
阅读 555
收藏 3

内存分布图

 //
  内核空间    应用程序不许访问
------------------------------- 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、程序代码区—存放函数体的二进制代码。

© 著作权归作者所有

下一篇: iOS 动画
Ethan-GOGO
粉丝 14
博文 174
码字总数 82033
作品 0
广州
私信 提问
52个有效方法(1) - 了解Objective-C语言的起源

Objective-C语言使用的是"消息结构"而非"函数调用"。 "消息结构"和"函数调用"之间的区别 "消息结构"的语言: 运行时由运行环境决定所应执行的代码 "函数调用"的语言: 由编译器决定 分配在堆中......

腿长的SkyMing-C
10/12
0
0
Redis设计与实现系列-基本数据结构-SDC

关于《Redis设计与实现》读书笔记 SDC全称是(simple dynamic string,SDS),Redis是以C语言编写的,但是Redis并没有直接使用C语言内置的字符串(C语言内置的字符串以空格结束),Redis自己构...

申文波
2018/07/30
88
0
深入理解C语言结构体成员变量内存分配

欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列博客。 1 问题描述 在学习C语言的时候,我们都会频繁的接触到结构体,使用结...

算法与编程之美
2018/04/05
405
2
C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)

BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 数据段:数据段(data segment)通常是...

秦宝艳
2013/06/25
21.7K
5
【Redis设计与实现】第2章 简单动态字符串

简单动态字符串 Redis并不直接使用C语言字符串,而是自己构建一套简单动态字符串(simple dynamic string ,SDS)C字符串仅仅在一些无需对字符串进行修改的地方使用,例如打印日志。SDS除了用...

HOT_POT
03/12
9
0

没有更多内容

加载失败,请刷新页面

加载更多

Nginx 快速安装详解

一、Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамбле...

网络小虾米
9分钟前
3
0
技术分享 | slave_relay_log_info 表认知的一些展开

作者:胡呈清 slave_relay_log_info 表是这样的: mysql> select * from mysql.slave_relay_log_info\G *************************** 1. row *************************** Number_of_lin......

爱可生
12分钟前
2
0
nginx配置http访问自动跳转到https

server {listen 80;server_name www.域名.com;rewrite ^(.*) https://$server_name$1 permanent;}server {listen 443;server_name www.域名.com;root /home/www;ssl on;......

很好亦平凡ms
12分钟前
2
0
SpreadJS:一款中国研发的类Excel开发工具,功能涵盖Excel的 95% 以上

Excel 作为一款深受用户喜爱的电子表格工具,借助其直观的界面、出色的计算性能、数据分析和图表,已经成为数据统计领域不可或缺的软件之一。 基于Excel对数据处理与分析的卓越表现,把Excel...

葡萄城技术团队
12分钟前
2
0
用javafx框架tornadofx做了个天气预报的程序

class WeatherApp : App(WeatherView::class)class WeatherView : View("十五天天气预报") { val weatherVM: WeatherViewModel by inject() val controller: WeatherController by......

oschina4cyy
16分钟前
2
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部