版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、linux操作系统华软软件学院电子系华软软件学院电子系P1P1P1P1 内存管理实验内存管理实验linux操作系统华软软件学院电子系华软软件学院电子系P2P2P2P2掌握掌握linux下内存管理相关的下内存管理相关的APIn动态申请内存、调整及释放动态申请内存、调整及释放实验目的实验目的linux操作系统华软软件学院电子系华软软件学院电子系P3P3P3P3内存管理相关系统调用内存管理相关系统调用void *malloc(int size); 动态申请内动态申请内存存 nint* p,p1; np= (int *) malloc (sizeof(int); void free(void *blo
2、ck); 释放由释放由malloc申请的内申请的内存存 n free(p);extern void *realloc(void *mem_address, unsigned int newsize);重新申请内存重新申请内存np1=(int*)realloc(p, sizeof(int)*10); void* alloca(int len); 半自动分配内存半自动分配内存np=(int*) alloca(sizeof(int)*10);linux操作系统华软软件学院电子系华软软件学院电子系P4P4P4P4内存管理基本概念内存管理基本概念下面是下面是C语言可执行程序的基本情况语言可执行程序的基本
3、情况在在linux下编译完,得到一个可执行程序后,这个可执行文下编译完,得到一个可执行程序后,这个可执行文件的信息可以用件的信息可以用ls、file、size等命令来查看它的信息:等命令来查看它的信息:$ gcc hello.c -o hello$ ls -lh hello-rwxrwxr-x 1 sice sice 7.2K 11月月 20 11:07 hello$ file hellohello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs),
4、for GNU/Linux 2.6.24, BuildIDsha1=0 x1c527b5f182525b11b81119597baf1aacbb97703, not stripped说明:说明:32位的小端格式的可执行文件,基于位的小端格式的可执行文件,基于intel 80386平台,等信息。平台,等信息。linux操作系统华软软件学院电子系华软软件学院电子系P5P5P5P5内存管理基本概念内存管理基本概念$ size hello 说明:说明:text :代码段的大小代码段的大小data :已初始化数据段大小已初始化数据段大小bss:未初始化数据段大小未初始化数据段大小dec:文件大小(十进制
5、表示)文件大小(十进制表示)hex:文件大小(十六进制表示)文件大小(十六进制表示)filename :文件名文件名linux操作系统华软软件学院电子系华软软件学院电子系P6P6P6P6内存管理基本概念内存管理基本概念(2)代码区代码区(text segment):存放:存放CPU执行的执行的机器指令,包括操作码和操作数,可共享、机器指令,包括操作码和操作数,可共享、通常只读。通常只读。全局初始化数据区全局初始化数据区/静态数据区静态数据区(data):包:包含明确被初始化的全局变量、静态变量和常含明确被初始化的全局变量、静态变量和常量数据。只初始化一次。量数据。只初始化一次。未初始化数据区未
6、初始化数据区(BSS):存入的是全局未初:存入的是全局未初始化变量。在运行时改变其值。始化变量。在运行时改变其值。linux操作系统华软软件学院电子系华软软件学院电子系P7P7P7P7C程序的内存布局程序的内存布局可执行代码(代码区)可执行代码(代码区)已初始化全局变量、静已初始化全局变量、静态变量和常量数据态变量和常量数据(数据数据区区)未初始化全局变量未初始化全局变量(BSS,用零初始化用零初始化)堆区堆区(向上增长向上增长)栈区栈区(向下增长向下增长)低地址低地址运行时的运行时的5个区域个区域高地址高地址用于动态分配用于动态分配内存内存由编译器自由编译器自动分配,存动分配,存放函数的参放
7、函数的参数值、局部数值、局部变量的值。变量的值。linux操作系统华软软件学院电子系华软软件学院电子系P8P8P8P8简单示例简单示例#include #include int a=0; /a在全局已初始化数据区在全局已初始化数据区char *p1; /p1在在BSS区区(未初始化全局变量未初始化全局变量)main()nint b; /b在栈区在栈区(局部变量局部变量)nchar s=“abc”; /s为数组变量,在栈区为数组变量,在栈区(局部变量局部变量)n /” abc”为字符串常量,在已初始化数据区为字符串常量,在已初始化数据区nchar *p1,*p2; / p1,p2在栈区在栈区nstatic int c=0; /c为全局静态数据,在已初始化数据区为全局静态数据,在已初始化数据区np1=(char*)malloc(10); /分配得来的分配得来的10个字节在堆区个字节在堆区np2=(char*)malloc(20); /分配得来的分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论