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 ,是否跟这个有关系呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
哦,明白了。看来我这方便的知识还有很大欠缺,多谢多谢!
一周热门 更多>