亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2738 | 回復(fù): 4
打印 上一主題 下一主題

[C++] [求教]棧的溢出覆蓋,結(jié)果和我的期待不一樣。 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2014-01-01 20:05 |只看該作者 |倒序?yàn)g覽
我知道x86平臺(tái)上棧是從高地址到低地址增長(zhǎng),數(shù)組元素是從低地址到高地址增長(zhǎng)。所以,數(shù)組元素越界的話,會(huì)把高地址的元素覆蓋掉。
下面是個(gè)測(cè)試程序,我使用GCC和VC(release版,不開(kāi)優(yōu)化)編譯運(yùn)行。

其中a[1]是個(gè)int數(shù)組,只有一個(gè)元素,如果對(duì)于a[1]賦值,導(dǎo)致溢出: 我期待的是棧上面的j變量被覆蓋,因?yàn)榫嚯x近,printf打印11.
但是運(yùn)行的結(jié)果是,看起來(lái)變量i被覆蓋了,打印的結(jié)果是12.

以上兩個(gè)編譯器編譯運(yùn)行的結(jié)果都是12.這是為什么呢? 難道我的理解有什么偏差嗎?
源代碼:

  1. int main(){
  2.     int i=1;
  3.     int j=2;
  4.     int a[1];
  5.     a[1]=10;
  6.     printf("%d\n",i+j);
  7.     return 0;
  8. }
復(fù)制代碼

論壇徽章:
16
CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:3415-16賽季CBA聯(lián)賽之廣東
日期:2015-12-23 21:21:55青銅圣斗士
日期:2015-12-05 10:35:30黃金圣斗士
日期:2015-11-26 20:42:16神斗士
日期:2015-11-19 12:47:50每日論壇發(fā)貼之星
日期:2015-11-18 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-11-18 06:20:002015亞冠之城南
日期:2015-11-10 19:10:492015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-10-28 18:47:282015亞冠之柏太陽(yáng)神
日期:2015-08-30 17:21:492015亞冠之山東魯能
日期:2015-07-07 18:48:39摩羯座
日期:2014-08-29 23:01:42
2 [報(bào)告]
發(fā)表于 2014-01-01 23:54 |只看該作者
看哈反匯編結(jié)果

論壇徽章:
4
白羊座
日期:2013-09-17 21:59:30技術(shù)圖書(shū)徽章
日期:2013-10-12 22:16:03白羊座
日期:2013-10-14 11:01:40雙子座
日期:2013-12-17 18:26:39
3 [報(bào)告]
發(fā)表于 2014-01-02 00:37 |只看該作者
局部變量的存放順序應(yīng)當(dāng)沒(méi)有被規(guī)定,不同的編譯器實(shí)現(xiàn)可能不同,
同一編譯器不同版本,不同的優(yōu)化級(jí)別都可能不同

論壇徽章:
95
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀(jì)念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
4 [報(bào)告]
發(fā)表于 2014-01-02 00:40 |只看該作者
回復(fù) 1# sampher


    變量在代碼中出現(xiàn)的順序和它們?cè)跅V校ㄈ绻鼈兇_實(shí)在棧中出現(xiàn)的話)的順序之間是沒(méi)有對(duì)應(yīng)關(guān)系的。例如用 gcc 4.8.2 在 Linux 下測(cè)試你的代碼,結(jié)果就是 11。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2014-01-02 18:38 |只看該作者
MMMIX 發(fā)表于 2014-01-02 00:40
回復(fù) 1# sampher

謝謝。。。。。。。。。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP