- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++语言教学中内存使用的若干问题
摘要:该文主要探讨了C++语言教学中在数组使用、动态内存管理、指针使用、浅拷贝等方面应注意的若干问题,并指出正确的处理方法,最后介绍了C++/CLR中的内存管理机制。
关键词:数组;动态内存管理;指针;浅拷贝;CLR
中图分类号:G642文献标识码:A文章编号:1009-3044(2009)31-0000-00
Some Notices about the Use of Memory in C++ Language Teaching
RUAN Zong-li, CHEN Hua, ZHANG Hua-qing
(College of Mathematics and Computation Science, China University of Petroleum, Dongying 257061, China)
Abstract: In this paper, some problems about the use of array, dynamic memory management, pointer, shallow copy and so on in c++ language teaching are discussed. The correct methods of operating are given. In the end, memory management mechanism of C++/CLR is introduced briefly.
Key words: array; dynamic memory management; pointer; shallow copy; CLR
程序设计语言C++在科研、教学、工程、生产、设计等领域具被广泛使用,这得益于它的直接访问内存的灵活、支持面向对象机制、代码运行高效等优点。但是,从教学实践中发现,作为初学者,在用C++编写程序时很容易出错,因此有必要指出其中的出错点。
下面先探讨ISO/ANSI C++中内存访问中值得注意的几个问题。
1 数组使用
数组是一种线性表数据结构,系统为其分配连续的内存空间,即数据元素按索引顺序连续存储,可以通过下标运算方便快速地访问其中数据,它在程序设计中被频繁使用。以下3个问题需要注意:
1)声明数组时指定的长度一定是常量表达式
int A[10],B[10+5];//正确,10和5为字面常量,故10和10+5均为常量表达式
int n=10;
int C[n],D[n+5];//错误,n为变量,故n和n+5均为变量表达式
const int N=10;
int E[N],F[N+5];//正确,N为符号常量,N和N+5均为常量表达式
2)访问不要越界,包括数组上界和下界
假设有数组int A[10];,则A[i]中的i只能为0到9,而小于0或大于9都属于越界,越界访问可能导致不可意料的错误,例如试图访问的操作系统所占用的内存,非常危险。C++编译器并没有给数组访问做越界检查,因此只有程序员谨慎使用。
3)数组长度不能过大
数组所占用的空间是连续的,即一个元素的空间紧挨着下一个元素的空间,这些空间是由编译系统自动分配的。编译系统自动分配的内存在被称为栈的内存块上[1],栈的的大小是一个编译时就确定的常数,如果申请的空间超过栈的剩余空间时,将提示溢出。因此,能从栈获得的空间较小。
如果元素数量很大,则不宜使用长度固定的数组,取而代之的可以是链表或动态分配的数组等,尤其是链表,系统将其每一个元素分配内存中任意一块可用的空间,整个链表占用的空间是非连续的,这是与数组的重要区别之处,但是链表元素不能像数组一样能随机访问,而只能顺序访问,显然效率要低。
链表结点元素空间是在被称为堆的内存块上申请的[1]。操作系统有一个记录堆上空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。动态申请的内存也是在堆上分配的。一般情况下,堆内存远比栈内存大,动态分配大块连续内存空间的成功率较高。
2 动态内存管理
运算符new/delete用于完成动态内存的申请与释放,使用中应注意以下几点:
1)动态申请不成功
以int *p=new int[n];为例,语句中动态申请有可能不成功,例如n很大而堆上空闲的连续内存空间都很小时,此时new 运算返回空指针,使用时应作检查,如果为空即p==0,则不能进行后续操作。程序中做这种检查是一个好的习
您可能关注的文档
- “做中学”维度下深层次工学结合模式的内涵界定及其途径分析.doc
- 《ASP.NET程序设计》教学方法的探索.doc
- 《ASP网页制作》教学方法探索与实践.doc
- 《C#程序设计》教学改革探索.doc
- 《C++程序设计教程》(第二版)的写作动机与特色.doc
- 《Access程序设计》教学方法探索.doc
- 《C程序设计》教学方法探讨.doc
- 《C程序设计》――一本难得的好教材.doc
- 《C语言》教学中学生学习兴趣的培养.doc
- 《C语言程序设计》的教学体会.doc
- 《GB/T 32879-2025电动汽车更换用电池箱连接器》.pdf
- 中国国家标准 GB/T 21649.2-2025粒度分析 图像分析法 第2部分: 动态图像分析法.pdf
- 中国国家标准 GB/T 20899.9-2025金矿石化学分析方法 第9部分:碳量的测定.pdf
- 《GB/T 20899.9-2025金矿石化学分析方法 第9部分:碳量的测定》.pdf
- GB/T 20899.9-2025金矿石化学分析方法 第9部分:碳量的测定.pdf
- 《GB/T 33820-2025金属材料 延性试验 多孔状和蜂窝状金属高速压缩试验方法》.pdf
- GB/T 33820-2025金属材料 延性试验 多孔状和蜂窝状金属高速压缩试验方法.pdf
- 中国国家标准 GB/T 33820-2025金属材料 延性试验 多孔状和蜂窝状金属高速压缩试验方法.pdf
- GB/T 45910-2025信息技术 生物特征识别模板保护方案的性能测试.pdf
- 《GB/T 45910-2025信息技术 生物特征识别模板保护方案的性能测试》.pdf
最近下载
- 《成人住院患者静脉血栓栓塞症的预防护理2023版团体标准》解读.pptx
- 开题报告医学PPT模板.pptx VIP
- 2011中考英语作文指导及范文.doc VIP
- 高考英语总复习-第二部分-语法填空专项突破-专题二-无提示词填空-第六讲-并列句和状语从句-市赛课公.pptx VIP
- 工会招聘考试试题及答案.doc VIP
- 河北省中考英语复习指导课件.pptx VIP
- 供应商评级管理办法.docx VIP
- 2025年人教版高一下学期期末考试数学试题与答案解析(共五套) .pdf VIP
- 2025年河北沧州渤海新区黄骅市事业单位公开招聘工作人员130名笔试备考试题及答案解析.docx VIP
- 党纪党规知识测试题及答案_党规知识测试题及答案.doc VIP
文档评论(0)