如圖,在調試中發生緩存區溢出的報錯。並且是在函數返回的時候發生的。數組
來講一下緩存區溢出的原理。在進入到該函數會首先將函數的返回地址寫在內存中H,而後函數中用的局部變量定義都會在緩存區中,一開始聲明的時候都肯定了各類變量的長度,可是當咱們異常的改變了這個變量的長度,以後,就發生了緩存區溢出的狀況,當溢出區覆蓋了原先的返回地址,因此在函數結束的時候就報錯了。緩存
事實上我發現char了一個長度爲64字節的數組,然而在初始化的時候memset了128字節,因此引起了這種錯誤,還有如sprintf,memcpy之類的內存操做方法都有可能會遇到這種狀況。函數