使用sprintf時(shí)溢出怎么會(huì)影響到變量的值?
大概從匯編層面了解下程序運(yùn)行的原理吧
1.函數(shù)調(diào)用(main也是被編譯器或是操作系統(tǒng)的某個(gè)方法調(diào)用的啦),每當(dāng)調(diào)用一個(gè)函數(shù)是棧指針就會(huì)移動(dòng),分配函數(shù)內(nèi)部定義局部變量所需的空間,就像你定義的倆buf,這倆buf的內(nèi)存在release編譯模式下是一般連續(xù)的,對(duì)其中一個(gè)的訪問越界自然數(shù)據(jù)就會(huì)串到另外一個(gè)局部變量里了。
2.學(xué)習(xí)建議,不要搞什么編譯原理,晦澀難懂,既然樓主能看反匯編,何不寫個(gè)簡(jiǎn)單的demo,分析調(diào)試下變量的內(nèi)存分布,函數(shù)調(diào)用時(shí)堆棧移動(dòng)等等,其實(shí)也就那么回事沒啥難的。
上一篇今年高考考生有多難呢
下一篇python中dir