程序發(fā)生run time error原因及解決方案
runtime error現(xiàn)象即產(chǎn)生原因
屬于運(yùn)行時(shí)錯(cuò)誤, 當(dāng)程序運(yùn)行到一半,程序發(fā)生崩潰。
1 、數(shù)組過(guò)小
2 、除數(shù)為零
3、 大數(shù)組定義在函數(shù)內(nèi)
4、 指針越界
5、 還有可能是程序拋出了未接收的異常,
原因
數(shù)組過(guò)小,導(dǎo)致程序訪問(wèn)到數(shù)組外的內(nèi)存區(qū)域
解決方案
適當(dāng)增大數(shù)組容量
原因
除數(shù)為零, 發(fā)生除零錯(cuò)誤
解決方案
若可能存在除數(shù)為零, 需對(duì)除數(shù)數(shù)值進(jìn)行判斷
原因
大數(shù)組定義在函數(shù)內(nèi),導(dǎo)致程序棧區(qū)耗盡
解決方案
1 、 將大數(shù)組定義在函數(shù)體外,使用程序堆空間。
在Windows下,棧的大小是2MB。而申請(qǐng)堆空間的大小一般小于2GB, 由于程序棧區(qū)空間遠(yuǎn)小于堆區(qū)空間,因此將大數(shù)組定義在函數(shù)外, 不易導(dǎo)致程序堆區(qū)耗盡。
2 、更改棧大小
link(鏈接)時(shí)用/STACK指定它的大小,或者在.def中使用STACKSIZE指定它的大小
使用控制臺(tái)命令“EDITBIN”更改exe的棧空間大小
Linux默認(rèn)??臻g的大小為8MB,通過(guò)命令ulimit -s來(lái)設(shè)置
3 、 使用其他數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)(如鏈表)
原因
指針用錯(cuò),導(dǎo)致訪問(wèn)到不該訪問(wèn)的內(nèi)存區(qū)域, 即指針越界
解決方案
修改指針?biāo)肝恢茫ɑ恢?+ 偏移量, 一般情況下是由偏移量過(guò)大引起)
原因
還有可能是程序拋出了未接收的異常,如使用已經(jīng)釋放的空間
解決方案
對(duì)于釋放后的空間 , 使用前, 需用關(guān)鍵字new申請(qǐng)內(nèi)存空間后方可使用
主要借鑒
Runtime error常見(jiàn)原因總結(jié)(各種oj,vjudge等等吧)
oj上做題runtime error可能的原因
C++入門(mén)——??臻g的大小文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-551733.html
原創(chuàng)不易
轉(zhuǎn)載請(qǐng)標(biāo)明出處
如果對(duì)你有所幫助 別忘啦點(diǎn)贊支持哈文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-551733.html
到了這里,關(guān)于程序發(fā)生run time error原因及解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!