如何向外行人解釋什么是內存溢出

jopen 10年前發布 | 8K 次閱讀 內存溢出

假設你有一張欠款清單,上面記錄了你的債主的姓名和欠款金額。

如何向外行人解釋什么是內存溢出

你還有一支神奇的鉛筆,這支筆內置了一種擦除功能,如果你用它在紙上某個地方寫字,它能自動的把這個地方以前有的字給擦除掉,這樣就只顯示出你新寫上的東西。這就是計算機內存的工作原理,跟我們生活中的涂改寫字方式稍有不同。

你買一輛5000美元的轎車,只付了500美元的首款,于是你欠他4500美元。他告訴你他的名字叫約翰-史密斯。你把他的名字和欠款數目寫到欠款表上。你的欠款清單現在看起來是這樣:

如何向外行人解釋什么是內存溢出

后來,你按照欠款單上的記錄還清了欠款。你償還了4500美元(加上利息),把這條記錄從欠款單上擦除了,現在你的欠款單又變成了空白。

之 后,你又從別人那里借了1000美元。他告訴你他的名字叫“約翰-史密斯 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx9999999999”。你把欠款數目(1000美元)和債主的姓名(約翰-史密 斯xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx9999999999)寫到了你的欠款單上。現在你的欠款單看起來是這個樣子:

如何向外行人解釋什么是內存溢出

(1000美元的最后一個0并沒有被擦除掉。這并不重要。)

當寫他的姓名時,姓名欄里寫不下他的名字,但你繼續往后寫,寫到了“欠款數目”欄里!這就是內存溢出。

后來,這個欠款單提醒你還欠約翰-史密斯xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx先生99999999990美元的錢。你找到他,償還了他大概1000億美元的欠款。

[英文原文: How to explain buffer overflow to a layman ]
來自: 外刊IT評論 http://www.vaikan.com/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!