今天下午對(duì)面的老大調(diào)試遇到這個(gè)問題,大家1起討論好久才解決這個(gè)問題
crt源代碼都是可以看到的,為了了解清楚緣由,10分有必要查看源碼,源碼1般在你的VS安裝路徑下VCcrtsrc下。
點(diǎn)擊重試,定位到崩潰源碼地方dbgdel.c的第52行。
為了了解緣由,我的測(cè)試代碼是這樣寫的:
程序員new 和 malloc申請(qǐng)的內(nèi)存是位于堆上面,程序不會(huì)自動(dòng)清算,這就是區(qū)分所在。
因此,檢查你所釋放(delete 或 free)的那個(gè)指針,不是動(dòng)態(tài)申請(qǐng)的就別弄巧成拙去釋放了。
老大遇到的情況就有點(diǎn)稀里糊涂了,new了1段內(nèi)存,然后調(diào)用delete[]釋放,啥都沒干也會(huì)崩潰。大家分析了下,代碼本身是沒有緣由的,這時(shí)候候他檢查工程屬性發(fā)現(xiàn):大部份工程都是win32的,這個(gè)dll卻是使用的mfc dll(說道MFC我想說下,這都甚么年頭了,如果是剛?cè)胄械木筒灰獙W(xué)MFC了,沒意義沒前程)。工程屬性改正后,重新編譯就行了。