之前寫過一段代碼,能在VS2013的Release下運行,但是不能在Debug下運行,所以又深入學習了一番,下面是學到的經驗。(橙色表示引用,紅色表示重點)
VS中的程序有Debug和Release兩個版本,其不同之處:
綜述:
? ? ? ?Debug程序通常比Release程序運行的慢,尤其在處理視頻方面,Release要比Debug快很多。在我看的資料中,似乎在Release模式下容易出現這樣的問題:變量雖然初始化,但是在看其值時卻發現是一個隨機的數,并不是初始化時的賦予這個變量的值。其原因大概是這樣的:
? ? ? ? Debug在初始化變量時,將每個字節位都賦成0xcc,代碼存在錯誤在debug方式下可能會忽略而不被察覺到。debug方式下數組越界也大多不會出錯。
? ? ? ? Release在初始化變量時,其賦值是近似于隨機的。如果你的程序中的某個變量沒被初始化就被引用,就很有可能出現異常:
? ? ? ? 用作控制變量將導致流程導向不一致;
? ? ? ? 用作數組下標將會使程序崩潰;
? ? ? ? 更加可能是造成其他變量的不準確而引起其他的錯誤。
所以在聲明變量后馬上對其初始化一個默認的值是最簡單有效的辦法,否則項目大了你找都沒地方找。
1、Debug通常稱為調試版,包含調試信息,不會做任何優化,便于程序員調試程序,有的錯誤類似數組越界,Debug模式下,一般不會報錯,但是Release就會;只有DEBUG版的程序才能設置斷點、單步執行、使用 TRACE/ASSERT等調試輸出語句
2、Release稱為發布版本,會進行各種優化,不包含提示信息,使得程序在代碼大小和運行速度上都是最優,一般不允許用戶在發布版調試,即在Release下,不允許調試。
參考:vs中debug和release版本的區別 - 一本書的傷痕 - 博客園