今天在跑代码时,一直报malloc失败错误,但是昨天还好的,看了更改记录,只是修改了一个保存文件的名字,仔细查看发现是因为我声明的字符串数组只有20,但是名字超过了20,然后把数组变大后,果然就正常了,但是我没明白为什么会这样。数组在栈中,malloc的数据在椎中,两者感觉不会影响到(空余内存是够的)。
相关代码如下:
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);
报malloc错误,很可能是gcc编译时报错并不一定会准确报错误的地址,也许是sprintf格式化时字符溢出,影响到malloc的赋值