函数内部直接定义数组与分配动态内存的区别

2019-07-20 14:57发布

void func_1(void)
{
    u8  temp[256];
    ……
}

void func_2(void)
{
    u8 *temp;

    temp = (u8*)mymalloc(SRAMIN,sizeof(u8)*256);
    ……
    myfree(SRAMIN,temp);
}

如上所示,按照我的理解,这两个函数应该并没有区别,无论是直接定义一个数组,还是下面的动态内存分配,其结果都是在内存中
开辟一块256的空间,函数结束后,清除该空间。

但实际测试时发现,用分配动态内存的方式,可以正常运行。
但如果是直接定义数组的话,则程序会卡死,跳转到HardFault_Handler
有大神能够帮忙指点一下么?

PS. 这是添加在uCOSiii中一个task中的函数,该task 堆栈设置的是1024 ,是否跟这个有关系呢?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。