鍍金池/ 問答/C/ malloc分配內(nèi)存失敗

malloc分配內(nèi)存失敗

今天在跑代碼時(shí),一直報(bào)malloc失敗錯(cuò)誤,但是昨天還好的,看了更改記錄,只是修改了一個(gè)保存文件的名字,仔細(xì)查看發(fā)現(xiàn)是因?yàn)槲衣暶鞯淖址當(dāng)?shù)組只有20,但是名字超過了20,然后把數(shù)組變大后,果然就正常了,但是我沒明白為什么會(huì)這樣。數(shù)組在棧中,malloc的數(shù)據(jù)在椎中,兩者感覺不會(huì)影響到(空余內(nèi)存是夠的)。
相關(guān)代碼如下:

char resultFileName[50]; //原來長度是20.
sprintf(resultFileName, "scaled_line_%dx%d_shv%d.yuv", scale_newWd, scale_newHg, shvNum);  //拼接后是 scaled_line_1920x1080_shv%d.yuv

guSaveImgData = (u8*)malloc(sizeOf(u8) * scale_newWd * scale_newHg); 
回答
編輯回答
安若晴

報(bào)malloc錯(cuò)誤,很可能是gcc編譯時(shí)報(bào)錯(cuò)并不一定會(huì)準(zhǔn)確報(bào)錯(cuò)誤的地址,也許是sprintf格式化時(shí)字符溢出,影響到malloc的賦值

2018年1月15日 20:56