1. 程式人生 > >Release正常,Debug不正常的奇怪現象

Release正常,Debug不正常的奇怪現象

一般情況都是Debug下正常,Release下有點問題,但別人給我的Demo,一執行有點懵,咋回事,找了好久,單步一步一走,最後發現在一個地方有點區別,造成的原因是:

char buf[64]; 

竟然程式碼裡有個陣列:

竟然不賦初值,我暈。

造成原因大概是這樣的:

Debug下是不做優化的,不賦初值那就是“

然後後面呼叫一個函式,把這個buf塞進去,一直返回錯(http用json上傳資料);也就是說如果buf都填0就對了。

但在Release正常,是因為,Release對未賦值的變數進行了優化:

所以在寫程式碼的時候,一定要對記憶體這樣操作:

char buf[64]={0};

或者:

char buf[64];

memset(buf, 0x00, 64);