代码错误

2019-07-21 04:20发布


    u8 *BlackImage, *RedImage;
    u16 Imagesize = 0x7800;
    if((BlackImage = (u8*)malloc(Imagesize / 2)) == NULL) {
        printf("Failed to apply for black memory... ");
        return -1;
    }
    if((RedImage = (u8*)malloc(Imagesize / 2)) == NULL){
        printf("Failed to apply for red memory... ");
        return -1;
    }
为什么程序里加了这段代码 单步调试时会进入
void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {}
}
出现这样的错误




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
edmund1234
1楼-- · 2019-07-22 03:16
IoTCatcher 发表于 2019-3-13 18:36
你的这个NULL判断, 有问题吧.

NULL 不是应该对返回的的指判断吗?

这样的判断没问题
IoTCatcher
2楼-- · 2019-07-22 06:24
本帖最后由 IoTCatcher 于 2019-3-14 09:05 编辑
edmund1234 发表于 2019-3-13 20:11
这样的判断没问题

嗯, 不至于崩.
我觉得楼主这个判断有点像  if ( (a = b) == NULL ).

正常应该这样吧?
    u8 *BlackImage;
    u16 Imagesize = 0x7800;
    BlackImage = (u8*)malloc(sizeof(u8) * (Imagesize / 2));
    if (NULL == BlackImage) {
        printf("Failed to apply for black memory... ");
        return -1;
    }

IoTCatcher
3楼-- · 2019-07-22 07:53
 精彩回答 2  元偷偷看……
NewGuard
4楼-- · 2019-07-22 09:14
原子好像有mymalloc例程
edmund1234
5楼-- · 2019-07-22 15:13
IoTCatcher 发表于 2019-3-14 08:57
嗯, 不至于崩.
我觉得楼主这个判断有点像  if ( (a = b) == NULL ).

这种语法很常用的, 没有正常不正常这么一说
szczyb1314
6楼-- · 2019-07-22 19:30
不要写这么复杂的表达式,很容易出问题,把你的分配空间跟判断是否分配成功分开写两句很费劲吗?

一周热门 更多>