1樓:李示羊
stack overflow(堆疊溢位)就是不顧堆疊中分配的區域性資料塊大小,向該資料塊寫入了過多的資料,導致資料越界,結果覆蓋了老的堆疊資料。 或者解釋為 在長字串中嵌入一段**,並將過程的返回地址覆蓋為這段**的地址,這樣當過程返回時,程式就轉而開始執行這段自編的**了。
比如如下這段程式:
#include
int main()
編譯並且執行,輸入ipxodiaaaaaaaaaaaaaaaa,執行完gets(name)之後,堆疊如下:
記憶體底部 記憶體頂部。
name ebp ret
<--ipxodiaa][aaaa][aaaa]..
^&name
堆疊頂部 堆疊頂部。
由於我們輸入的name字串太長,name陣列容納不下,只好向記憶體頂部繼續寫'a'。由於堆疊的生長方向與記憶體的生長方向相反,這些'a』覆蓋了堆疊的老的元素。'ebp ret』都被'a'覆蓋了。
在main返回的時候,就會把'aaaa'的ascii碼:0x41414141作為返回地址,cpu會試圖執行0x41414141處的指令,結果出現錯誤。這就是一次堆疊溢位!
2樓:網友
堆疊溢位,申請地址超過堆疊的大小。有可能是遞迴沒有結束條件,或結束條件太難實現。這種情形時,可以把遞迴改為迴圈。或者是你申請沒有釋放,或者申請太大(應該是申請大小的引數有誤)
(stack_overflow)是什麼意思?
3樓:市昊空
堆疊溢位,申請地址超過堆疊的大小。有可能是遞迴沒有結束條件,或結束條件太難實現。這種情形時,可以把遞迴改為迴圈。或者是你申請沒有釋放,或者申請太大(應該是申請大小的引數有誤)
stack overflow怎麼辦
答非所問通常是哪些原因導致的,答非所問通常是哪些原因導致的
通常是不用心聽別人的話導致的,上學的時候經常遇見這樣的情況,老師讓回答問題,而我回答的通常會讓一教室的人鬨堂大笑,老師更是臉拉下來,這樣的原因是什麼,還不是因為我沒聽老師的問題,鬧出了不少笑話,而且我覺得如果我是問你問題的人,我說的問題你答非所問我心裡肯定很生氣,說明你不用心,沒好好聽我的話,所以還...
通常發什麼快遞最便宜,最好,通常發什麼快遞最便宜,最好
就快遞來說,最便宜和最好是有很明顯的矛盾的。取決質量,質量決定 所以只有價效比高和低之分,沒有最便宜和最好這樣的快遞。價效比高的,建議 申通 圓通 中通 韻達,俗話說的 3通1達。的 建議 順豐快遞 便宜的 建議 匯通 cces 等一些小型快遞,或者新起的快遞。職業賣家為您解答,祝您愉快。沒有最便宜...
通常什麼板材較好
板材品牌多,單單我知道的板材有 一 福慶板材,江蘇省著名商標,江蘇省名牌產品,中國膠合板協會執行會長單位 二 千年舟板材,浙江著名商標。三 聲達木業,成立於1998年,上海市著名商標。四 兔寶寶,建立於1993年,上市公司,膠合板行業標準起草單位。五 莫干山,創始於1995年,昇華集團旗下,浙江省著...