▁they ▁are ▁actually ▁initial ised ▁to ▁their ▁correct ▁value .) ▁In ▁C , ▁variables ▁with ▁static ▁storage ▁duration ▁that ▁are ▁not ▁initialized ▁explicitly ▁are ▁initialized ▁to ▁zero ▁( or ▁null , ▁for ▁pointers ). ▁ ▁Not ▁only ▁are ▁un initial ized ▁variables ▁a ▁frequent ▁cause ▁of ▁bugs , ▁but ▁this ▁kind ▁of ▁bug ▁is ▁particularly ▁serious ▁because ▁it ▁may ▁not ▁be ▁reprodu cible : ▁for ▁instance , ▁a ▁variable ▁may ▁remain ▁un initial ised ▁only ▁in ▁some ▁branch ▁of ▁the ▁program . ▁In ▁some ▁cases , ▁programs ▁with ▁un initial ized ▁variables ▁may ▁even ▁pass ▁software ▁tests . ▁ ▁Imp act s ▁ ▁Un initial ized ▁variables ▁are ▁powerful ▁bugs ▁since ▁they ▁can ▁be ▁explo ited ▁to ▁leak ▁arbitrary ▁memory ▁or ▁to ▁achieve ▁arbitrary ▁memory ▁overwrite ▁or ▁to ▁gain ▁code ▁execution , ▁depending ▁on ▁the ▁case . ▁When ▁explo iting ▁a ▁software ▁which ▁util izes ▁address ▁space ▁layout ▁random ization , ▁it ▁is ▁often ▁required ▁to ▁know ▁the ▁base ▁address ▁of ▁the ▁software ▁in ▁memory . ▁Exp lo iting ▁an ▁un initial ized ▁variable ▁in ▁a ▁way ▁to ▁force ▁the ▁software ▁to ▁leak ▁a ▁pointer ▁from ▁its ▁address ▁space ▁can ▁be ▁used ▁to ▁by pass ▁AS LR . ▁ ▁Use ▁in ▁languages ▁Un initial ized ▁variables ▁are ▁a ▁particular ▁problem ▁in ▁languages ▁such ▁as ▁assembly ▁language , ▁C , ▁and ▁C ++, ▁which ▁were ▁designed ▁for ▁systems ▁programming . ▁The ▁development ▁of ▁these ▁languages ▁involved ▁a ▁design ▁philosophy ▁in ▁which ▁conflicts ▁between ▁performance ▁and ▁safety ▁were ▁generally ▁resolved ▁in ▁favor ▁of ▁performance .