欢迎来到天天文库
浏览记录
ID:38313071
大小:287.32 KB
页数:27页
时间:2019-06-09
《编译原理-全动态内存管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Chapter7DynamicMemoryParameterPassingMechanismsInstructorJianhuiYueSoftwareCollege@SCUcompilerscu@21cn.comLimitationsofStack-BasedEnvironmentIfareferencetoalocalvariableinaprocedurecanbereturnedtothecaller,theresultwillbedanglingreference.Whentheprocedu
2、reisexited,theactivationrecordwillbedeallocatedfromthestack.addr=dangle()causesaddrtopointtoanunsafelocation.SuchprogramiserroneousinC.(Nocompilerwillgiveanerrormessage)int*dangle(){intx;return&x;}LimitationsofStack-BasedEnvironment(cont)Cprohibitslocal
3、procedures.Functionalprogramminglanguages(LISP,ML)FunctionsmustbeabletobelocallydefinedPassedasparametersReturnedasresults.Stack-basedruntimeenvironmentisinadequatefortheselanguages.FullyDynamicEnvironmentItcandeallocateactivationrecordsonlywhenallrefer
4、encestothemhavedisappeared.Activationrecordscanbedynamicallyfreedatarbitrarytimesduringexecution.Fullydynamicenvironmentismorecomplicated.Trackingthereferencesduringexecution.Findinganddeallocatinginaccessibleareasofmemoryatarbitrarytimesduringexecution
5、(garbagecollection).ActivationRecordsThebasicstructureofanactivationrecordremainsthesame:Spaceforparametersandlocalvariables.Controlandaccesslinks.Theexitedactivationrecordremainsinmemory,tobedeallocatedatsomelatertime.Theentireadditionalcomplexitycanbe
6、encapsulatedinamemorymanagerthatreplacestheruntimestackoperationswithmoregeneralallocationanddeallocationroutines.Object-OrientedLanguagesOOlanguagesrequirespecialmechanismsintheruntimeenvironmenttoimplementtheiraddedfeatures:ObjectsMethodsInheritanceDy
7、namicbindingOOlanguagesvaryintheirrequirementsfortheruntimeenvironment:C++retainsthestack-basedenvironmentofC,noautomaticdynamicmemorymanagementSmalltalkrequiresfullydynamicenvironmentsimilartoLISPImplementationofObjectsKeepacompletedescriptionoftheclas
8、sstructureinmemoryduringexecution.Maintaintheinheritancebythesuperclasspointers.Keeppointerstoallmethods.Eachobjectkeeps:FieldsforinstancevariablesApointertoitsdefiningclassAllmethods(localandinherited)arefoundthroughit.Instancev
此文档下载收益归作者所有