中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

學(xué)校網(wǎng)站群建設(shè)方案找個(gè)網(wǎng)站

學(xué)校網(wǎng)站群建設(shè)方案,找個(gè)網(wǎng)站,jsp網(wǎng)站開發(fā)與設(shè)計(jì)摘要,西安百度公司地址介紹文章目錄小結(jié)問(wèn)題及解決參考小結(jié) 使用sprintf(...)進(jìn)行格式化是一種標(biāo)準(zhǔn)的做法,但是這樣做是有一個(gè)極大的風(fēng)險(xiǎn),由于sprintf(...)不進(jìn)行邊界檢查,這樣會(huì)有寫操作溢出邊界的風(fēng)險(xiǎn),并導(dǎo)致程序崩潰。本文進(jìn)行了簡(jiǎn)單寫操作溢出邊界的測(cè)…

文章目錄

  • 小結(jié)
  • 問(wèn)題及解決
  • 參考

小結(jié)

使用sprintf(...)進(jìn)行格式化是一種標(biāo)準(zhǔn)的做法,但是這樣做是有一個(gè)極大的風(fēng)險(xiǎn),由于sprintf(...)不進(jìn)行邊界檢查,這樣會(huì)有寫操作溢出邊界的風(fēng)險(xiǎn),并導(dǎo)致程序崩潰。本文進(jìn)行了簡(jiǎn)單寫操作溢出邊界的測(cè)試,模擬程序崩潰,并建議了更為安全的snprintf(...)方法進(jìn)行格式化。

問(wèn)題及解決

眾所周知,sprintf(...)不進(jìn)行邊界檢查,再加上double或者是float的內(nèi)建的數(shù)據(jù)類型一起使用(有時(shí)候會(huì)是一個(gè)比較大的正數(shù)),比較容易出現(xiàn)寫操作溢出邊界并導(dǎo)致程序崩潰,已經(jīng)是臭名昭著了。

以代碼sprintf(str, "%.2fMB(%.2f%%)", double_a, double_b);為例。

sprintf的說(shuō)明指示符%.2f規(guī)定了小數(shù)點(diǎn)后面截取兩位,但小數(shù)點(diǎn)前面有多少位就采用多少位,例如像2.4008127812204012E+159這樣的大數(shù),基本上小數(shù)點(diǎn)前面就超過(guò)160位數(shù)字了。如果數(shù)組str比較小,就抓瞎了,寫操作會(huì)溢出邊界,并致程序崩潰。這種錯(cuò)誤有時(shí)候極難定位,浪費(fèi)很多寶貴的時(shí)候來(lái)找bug。

如果采用比較安全的做法, 例如: snprintf(str_short, 30, "%.2fMB(%.2f%%)", double_a, double_b);,規(guī)定了邊界,只寫入前29位(最后再加一個(gè)結(jié)尾符),這樣就不用擔(dān)心寫操作會(huì)溢出邊界的問(wèn)題了。

以下是程序測(cè)試很好地模擬了幾種情況(double_a是一個(gè)很大的數(shù),double_b是一個(gè)很小的數(shù)):

	char str[200];char str_short[30];double double_a= 2.4008127812204012E+159;double double_b= 1.3906711615670009E-309;cout << "double_a= " << double_a<< endl;cout << "double_b= " << double_b<< endl;//以下代碼不會(huì)出現(xiàn)溢出邊界,程序正常運(yùn)行sprintf(str, "%.2fMB(%.2f%%)", double_a, double_b);cout << "str string = " << strStorage << endl;//以下代碼會(huì)出現(xiàn)溢出邊界并導(dǎo)致程序崩潰, 注釋之//sprintf(str_short, "%.2fMB(%.2f%%)", double_a, double_b);//cout << "str_short string = " << str_short<< endl;//以下代碼是比較安全的做法,進(jìn)行有效的邊界檢查, 不會(huì)出現(xiàn)溢出邊界,程序正常運(yùn)行,輸出了29位數(shù)字(后接一個(gè)結(jié)尾符)snprintf(str_short, 30, "%.2fMB(%.2f%%)", double_a, double_b);cout << "str_short string = " << str_short<< endl;system("pause");return 0;

輸出結(jié)果:

double_a= 2.40081e+159
double_b= 1.39067e-309
str string = 2400812781220401246196118053255811918339999978374591715533604156445593861118215728144462510983065193819073699313679732935503602200085321608454731838025375940608.00MB(0.00%)
str_short string = 24008127812204012461961180532
Press any key to continue . . .

參考

sprintf(str,“%f”, voltage_temp ); works in C but not C ++
C++ Buffer Overflow: Format String (%f/%F)
Stackoverflow: understanding the dangers of sprintf(…)
C++ float and double

http://www.risenshineclean.com/news/42367.html

相關(guān)文章:

  • 淘客請(qǐng)人做網(wǎng)站網(wǎng)站策劃書
  • 做網(wǎng)站大概要多外鏈怎么打開
  • 如何建設(shè)網(wǎng)站的管理平臺(tái)免費(fèi)網(wǎng)站seo
  • 婁底網(wǎng)站建設(shè)工作室谷歌收錄查詢
  • 成都建設(shè)網(wǎng)站微營(yíng)銷官網(wǎng)
  • 市局網(wǎng)站建設(shè)建議如何注冊(cè)自己的網(wǎng)站
  • 網(wǎng)站規(guī)劃與建設(shè)論文網(wǎng)站seo外包公司有哪些
  • 怎么用電腦做web服務(wù)器網(wǎng)站淘寶關(guān)鍵詞排名是怎么做的
  • 西安專業(yè)做網(wǎng)站建設(shè)費(fèi)用愛(ài)站網(wǎng)的關(guān)鍵詞是怎么來(lái)的
  • 溫州網(wǎng)站制作多少錢全網(wǎng)營(yíng)銷公司
  • 網(wǎng)站備案 godaddyseo公司上海牛巨微
  • 公司網(wǎng)站建設(shè)費(fèi)屬于什么費(fèi)用網(wǎng)站服務(wù)器是什么意思
  • 做返利網(wǎng)站怎麼網(wǎng)絡(luò)推廣費(fèi)用預(yù)算表
  • 大連在哪個(gè)網(wǎng)站做網(wǎng)上核名鄭州seo公司哪家好
  • 技術(shù)支持:淄博網(wǎng)站建設(shè)濰坊自動(dòng)seo
  • 線上推廣方法有哪些長(zhǎng)沙網(wǎng)站seo報(bào)價(jià)
  • 期貨做程序化回測(cè)的網(wǎng)站網(wǎng)站網(wǎng)絡(luò)排名優(yōu)化方法
  • 建設(shè)綜合信息網(wǎng)站需要多少錢如何廣告推廣
  • 國(guó)產(chǎn)一級(jí)a做爰片免費(fèi)網(wǎng)站哪個(gè)網(wǎng)站是免費(fèi)的
  • 網(wǎng)絡(luò)營(yíng)銷模式包括哪些seo網(wǎng)站關(guān)鍵詞快速排名
  • 做網(wǎng)站放太多視頻seo項(xiàng)目分析
  • 十堰網(wǎng)站seo方法百度seo關(guān)鍵詞優(yōu)化公司
  • 做公司網(wǎng)站一般多少錢免費(fèi)軟件下載網(wǎng)站有哪些
  • 集團(tuán)網(wǎng)站建設(shè)方案書游戲推廣員是違法的嗎
  • 軟件開發(fā)步驟流程鄭州見(jiàn)效果付費(fèi)優(yōu)化公司
  • 廈門 微網(wǎng)站制作企業(yè)推廣策劃書
  • 做寵物食品的網(wǎng)站優(yōu)化落實(shí)疫情防控新十條
  • 上傳了網(wǎng)站源碼怎么做新聞最新熱點(diǎn)
  • 桓臺(tái)網(wǎng)站開發(fā)廣州:推動(dòng)優(yōu)化防控措施落地
  • 中國(guó)互聯(lián)網(wǎng)網(wǎng)站性能丈哥seo博客工具