欢迎来到天天文库
浏览记录
ID:34415526
大小:26.61 KB
页数:13页
时间:2019-03-05
《cc内存分配与内存对齐》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、不明白内存分配和指针的可以看看,其实这本是我们老师留的一个操作系统科技小论文作业,不知道写什么,干脆把以前收藏的经典C内存分配的文章整理并修改了一下。 此文章有2个用处,1:这是个小论文,格式完整,大家可以复制回去交作业;2:这是整理的经典C内存分配小教程(也加了些我自己的观点),不明白内存分配的可以看看。还有很重要的一个问题: 这篇文章引用的很多内容我也不知道究竟是出自谁手,知道作者是谁的麻烦告诉下,我好谢谢他。(记得都是csdn里面找的)tag:操作系统论文内存分配内存对齐c语
2、言内存分配免费论文下载.doc正文:关于程序设计的内存分配问题freec(辽宁工程技术大学 软件学院 计SJ07-3 辽宁 葫芦岛 125000)[摘 要]在大多数低层程序设计中,由于内存分配与内存对齐问题所带来的bug所占比重非常大。本文对内存分配中的分配空间类型、作用、方法、适用范围、优缺点以及内存对齐问题中的对齐原因、对齐规则等进行了详细的说明,并结合大量c语言代码进行阐述与分析。[关键词]内存分配;堆栈原理;内存对齐; 1 引言操作系统的内存分配问题与内存对齐问题对于低层程序设计来说是非常
3、重要的,对内存分配的理解直接影响到代码质量、正确率、效率以及程序员对内存使用情况、溢出、泄露等的判断力。而内存对齐是常常被忽略的问题,理解内存对齐原理及方法则有助于帮助程序员判断访问非法内存。 2 程序的内存分配问题 一、一般C/C++程序占用的内存主要分为5种 1、栈区(stack):类似于堆栈,由程序自动创建、自动释放。函数参数、局部变量以及返回点等信息都存于其中。 2、堆区(heap): 使用自由,不需预先确定大小。多数情况下需要由程序员手动申请、释放。如不释放,程序结束后由操作系
4、统垃圾回收机制收回。 3、全局区/静态区(static):全局变量和静态变量的存储是区域。程序结束后由系统释放。 4、文字常量区:常量字符串就是放在这里的。 程序结束后由系统释放。5、程序代码区:既可执行代码。 例:#includeintquanju;/*全局变量,全局区/静态区(static)*/voidfun(intf_jubu);/*程序代码区*/intmain(void)/**/{ intm_jubu;/*栈区(stack)*/ stat
5、icintm_jingtai;/*静态变量,全局区/静态区(static)*/ char*m_zifum,*m_zifuc="hello";/*指针本身位于栈。指向字符串"hello",位于文字常量区*/ void(*pfun)(int);/*栈区(stack)*/ pfun=&fun; m_zifum=(char*)malloc(sizeof(char)*10);/*指针内容指向分配空间,位于堆区(heap)*/ pfun(1);
6、 printf("&quanju :%x/n",&quanju); printf("&m_jubu :%x/n",&m_jubu); printf("&m_jingtai:%x/n",&m_jingtai); printf("m_zifuc :%x/n",m_zifuc); printf("&m_zifuc :%x/n",&m_zifuc); printf("m_zifum :%x/n",m_zifum);
7、 printf("&m_zifum :%x/n",&m_zifum); printf("pfun :%x/n",pfun); printf("&pfun :%x/n",&pfun); getch(); return0;}voidfun(intf_jubu){ staticintf_jingtai; printf("&f_jingtai:%x/n",&f_jingtai); printf("&f_j
8、ubu :%x/n",&f_jubu);/*栈区(stack),但是与主函数中m_jubu位于不同的栈*/} 输出结果:&f_jingtai:404020&f_jubu :22ff40&quanju :404070&m_jubu :22ff74&m_jingtai:404010m_zifuc :403000&m_zifuc :22ff6cm_zifum :3d24e0&m_zifum :22ff70pfun :4013af&pfu
此文档下载收益归作者所有