网站大量收购闲置独家精品文档,联系QQ:2885784924

linux内存管理实验.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux内存管理实验

linux操作系统 华软软件学院电子系 P* P* P* P* Linux操作系统 华软软件学院电子系 P* 内存管理实验 掌握linux下内存管理相关的API 动态申请内存、调整及释放 实验目的 内存管理相关系统调用 void *malloc(int size); 动态申请内存 int* p,p1; p= (int *) malloc (sizeof(int)); void free(void *block); 释放由malloc申请的内存 free(p); extern void *realloc(void *mem_address, unsigned int newsize);重新申请内存 p1=(int*)realloc(p, sizeof(int)*10); void* alloca(int len); 半自动分配内存 p=(int*) alloca(sizeof(int)*10); 内存管理基本概念 下面是C语言可执行程序的基本情况 在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 hello hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x1c527b5f182525b11af1aacbb97703, not stripped 说明:32位的小端格式的可执行文件,基于intel 80386平台,等信息。 内存管理基本概念 $ size hello 说明: text :代码段的大小 data :已初始化数据段大小 bss :未初始化数据段大小 dec :文件大小(十进制表示) hex :文件大小(十六进制表示) filename :文件名 内存管理基本概念(2) 代码区(text segment):存放CPU执行的机器指令,包括操作码和操作数,可共享、通常只读。 全局初始化数据区/静态数据区(data):包含明确被初始化的全局变量、静态变量和常量数据。只初始化一次。 未初始化数据区(BSS):存入的是全局未初始化变量。在运行时改变其值。 C程序的内存布局 可执行代码(代码区) 已初始化全局变量、静态变量和常量数据(数据区) 未初始化全局变量(BSS,用零初始化) 堆区(向上增长) 栈区(向下增长) 低地址 运行时的5个区域 高地址 用于动态分配内存 由编译器自动分配,存放函数的参数值、局部变量的值。 简单示例 #include stdio.h #include stdlib.h int a=0; //a在全局已初始化数据区 char *p1; //p1在BSS区(未初始化全局变量) main(){ int b; //b在栈区(局部变量) char s[]=“abc”; //s为数组变量,在栈区(局部变量) //” abc”为字符串常量,在已初始化数据区 char *p1,*p2; // p1,p2在栈区 static int c=0; //c为全局静态数据,在已初始化数据区 p1=(char*)malloc(10); //分配得来的10个字节在堆区 p2=(char*)malloc(20); //分配得来的20个字节在堆区 free(p1); free(p2);} Linux 内存查看命令free(补充) 功能说明:显示内存状态。 语  法: free [-bkmotV][-s ] 补充说明:free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。 参  数: -b  以Byte为单位显示内存使用情况。 -k  以KB为单位显示内存使用情况。 -m  以MB为单位显示内存使用情况。 -o  不显示缓冲区调节列。 -s  持续观察内存使用状况。 -t  显示内存总和列。 -V  显示版本信息。 也可以用vmstat命令查看内存情况 也可以用cat /proc/meminfo查看 实验1 申请、使用、释放内存 Linux下编写一个C程序,申请一块大小为10字节的内存,存放” 123456789”,输出字符串及存放地址。(动

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档