VS中Debug和Release版本的区别
之前寫過一段代碼,能在VS2013的Release下運(yùn)行,但是不能在Debug下運(yùn)行,所以又深入學(xué)習(xí)了一番,下面是學(xué)到的經(jīng)驗(yàn)。(橙色表示引用,紅色表示重點(diǎn))
VS中的程序有Debug和Release兩個(gè)版本,其不同之處:
綜述:
? ? ? ?Debug程序通常比Release程序運(yùn)行的慢,尤其在處理視頻方面,Release要比Debug快很多。在我看的資料中,似乎在Release模式下容易出現(xiàn)這樣的問題:變量雖然初始化,但是在看其值時(shí)卻發(fā)現(xiàn)是一個(gè)隨機(jī)的數(shù),并不是初始化時(shí)的賦予這個(gè)變量的值。其原因大概是這樣的:
? ? ? ? Debug在初始化變量時(shí),將每個(gè)字節(jié)位都賦成0xcc,代碼存在錯(cuò)誤在debug方式下可能會(huì)忽略而不被察覺到。debug方式下數(shù)組越界也大多不會(huì)出錯(cuò)。
? ? ? ? Release在初始化變量時(shí),其賦值是近似于隨機(jī)的。如果你的程序中的某個(gè)變量沒被初始化就被引用,就很有可能出現(xiàn)異常:
? ? ? ? 用作控制變量將導(dǎo)致流程導(dǎo)向不一致;
? ? ? ? 用作數(shù)組下標(biāo)將會(huì)使程序崩潰;
? ? ? ? 更加可能是造成其他變量的不準(zhǔn)確而引起其他的錯(cuò)誤。
 所以在聲明變量后馬上對(duì)其初始化一個(gè)默認(rèn)的值是最簡單有效的辦法,否則項(xiàng)目大了你找都沒地方找。
1、Debug通常稱為調(diào)試版,包含調(diào)試信息,不會(huì)做任何優(yōu)化,便于程序員調(diào)試程序,有的錯(cuò)誤類似數(shù)組越界,Debug模式下,一般不會(huì)報(bào)錯(cuò),但是Release就會(huì);只有DEBUG版的程序才能設(shè)置斷點(diǎn)、單步執(zhí)行、使用 TRACE/ASSERT等調(diào)試輸出語句
2、Release稱為發(fā)布版本,會(huì)進(jìn)行各種優(yōu)化,不包含提示信息,使得程序在代碼大小和運(yùn)行速度上都是最優(yōu),一般不允許用戶在發(fā)布版調(diào)試,即在Release下,不允許調(diào)試。
參考:https://www.cnblogs.com/shangbolei/p/4950128.html
?
總結(jié)
以上是生活随笔為你收集整理的VS中Debug和Release版本的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 抗日之铁血救国女主有几位
- 下一篇: 中国博物馆里的枪械为什么要把枪管堵死?
