国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

數(shù)組越界那點事兒

2019-11-11 03:08:32
字體:
供稿:網(wǎng)友

C語言中,函數(shù)在調(diào)用一個數(shù)組時,如果局部數(shù)組寫入產(chǎn)生了越界,則會導(dǎo)致函數(shù)的返回地址被覆蓋掉,從而破壞調(diào)用函數(shù)的棧幀。

而數(shù)組越界寫入就是破壞堆棧的原因有以下兩點:

1、入口參數(shù)是在棧底(內(nèi)存高位)附近(函數(shù)的返回地址也在附近)

2、數(shù)組的存放是從內(nèi)存低位向高位存放。所以,如果數(shù)組大小是4字節(jié),如果越界寫入,就會向上破壞相鄰高位內(nèi)存中保存的數(shù)據(jù),可能是前面的局部變量,當(dāng)越界寫入內(nèi)容足夠多,就會破壞棧底保存的函數(shù)的返回地址,直接導(dǎo)致函數(shù)返回時發(fā)生崩潰。

例如:

#include<stdio.h>

#include<windows.h>#include<string.h>#PRagma warning(disable:4996)/*************************************局部數(shù)組越界會導(dǎo)致函數(shù)的返回地址被覆蓋掉,因為局部數(shù)組的存儲空間在函數(shù)的返回地址下面*****************/int main(){char buf[5];strcpy(buf, "hello Word welcome to shanxi xian everybody");/*被復(fù)制粘的字符串長度超過數(shù)組長度,則會覆蓋main函數(shù)的返回地址*/printf("%s", buf);//exit(0);程序正常退出,main函數(shù)直接返回,無需地址;system("pause");return 0;//不return就不會使用覆蓋地址}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 陵川县| 泸定县| 巴彦淖尔市| 龙山县| 水富县| 宜丰县| 开原市| 庆元县| 翁源县| 承德市| 沾化县| 兰州市| 蒲城县| 六枝特区| 辽阳县| 翁牛特旗| 岳西县| 遵化市| 舟曲县| 云梦县| 长春市| 洛南县| 内黄县| 盘锦市| 上蔡县| 和田市| 神木县| 台中县| 景德镇市| 涞水县| 舟山市| 营口市| 北川| 抚宁县| 合作市| 绍兴县| 文昌市| 仪陇县| 台前县| 阜新| 资溪县|