简介:TheCprogramminglanguageisexpressiveandflexible,butnotsafe;asitsexpressivepowerandflexibilityareobtainedthroughunsafelanguagefeatures,andimproperuseofthesefeaturescanleadtoprogrambugswhosecausesarehardtoidentify.SinceCiswidelyused,anditisimpracticaltorewriteallexistingCprogramsinsafelanguages,sowaysmustbefoundtomakeCprogramssafe.ThispaperdealswiththeunsafefeaturesofCandpresentsasurveyonexistingsolutionstomakeCprogramssafe.Wehavestudiedbinary-levelinstrumentationtools,sourcecheckers,source-levelinstrumentationtoolsandsafedialectsofC,andpresentacomparisonofdifferentsolutions,summarizedthestrengthsandweaknessesofdifferentclassesofsolutions,andshowmeasuresthatcouldpossiblyimprovetheaccuracyoralleviatetheoverheadofexistingsolutions.