找回密码
 注册
搜索
查看: 1150|回复: 15

请教MTK对变量大小的限制

[复制链接]
发表于 2008-2-27 16:12:16 | 显示全部楼层 |阅读模式
在MTK下建立一个变量对分配的空间有没有限制?我建立一个比较占空间的变量(全局或者局部结果一样),运行到这里马上黑屏死机。
例如
char sztemp[5000]
到这里就死,改成比较小的数值就可以,不知道为什么
发表于 2008-2-27 16:22:51 | 显示全部楼层
这里没问题,肯定是你代码其它地方有问题
点评回复

使用道具 举报

发表于 2008-2-27 18:10:28 | 显示全部楼层
是不是临时变量,函数里边的临时变量大小是有限制的,一个函数里边的临时变量的总大小,取决该函数的栈的大小
点评回复

使用道具 举报

发表于 2008-2-27 22:48:19 | 显示全部楼层
我个人认为只可能是临时变量.临时变量的空间是从堆栈来的.如果函数是在task里,要改task的堆栈的大小.如果是中断,就要改中断的栈的大小.
点评回复

使用道具 举报

 楼主| 发表于 2008-2-28 19:48:36 | 显示全部楼层
我试过很多次
void stock_test_5(void)
{
        char sztemp[6000];
        memset(sztemp, 0, sizeof(sztemp));
}
这样的函数一执行就马上黑屏死机
点评回复

使用道具 举报

发表于 2008-2-28 19:54:47 | 显示全部楼层
[em13]学习!
点评回复

使用道具 举报

 楼主| 发表于 2008-2-28 19:59:03 | 显示全部楼层
有没有人知道啊?
点评回复

使用道具 举报

发表于 2008-2-29 09:09:17 | 显示全部楼层
我试过很多次
void stock_test_5(void)
{
char sztemp[6000];
memset(sztemp, 0, sizeof(sztemp));
}
这样的函数一执行就马上黑屏死机
----------------------------------------------
建议编译成汇编代码看看,我记得这个大的数组一般汇编后都不产生在栈里面,汇编程序会自动malloc一块空间存储.
点评回复

使用道具 举报

发表于 2008-3-3 18:29:54 | 显示全部楼层
局部变量是压在栈里面的,6000超过了栈的大小,一般task的栈空间只有4K。
点评回复

使用道具 举报

发表于 2008-3-3 18:49:34 | 显示全部楼层
[em03]
这么写不死机有鬼了
点评回复

使用道具 举报

发表于 2008-3-7 09:49:36 | 显示全部楼层
晕,这么基础的C语言编成问题!!!!  再复习一下C语言吧
点评回复

使用道具 举报

发表于 2008-3-7 10:24:13 | 显示全部楼层
这么大的数组,不能用局部变量

连动态申请都不推荐,最安全的方法是写成全局变量.
点评回复

使用道具 举报

发表于 2008-3-10 17:40:06 | 显示全部楼层
全局数组占用RAM空间,而RAM空间很有限,还是建议动态分配的好。
点评回复

使用道具 举报

发表于 2008-3-13 14:38:20 | 显示全部楼层
局部变量定义得这么大一定会死机得!!!
基本MTK内部,局部变量要小于1K, 否则调用层次稍微复杂点就fatal error出现
我们宁可全局变量,或者调用共享内存来做这么大的内存分配
点评回复

使用道具 举报

发表于 2008-7-13 08:52:08 | 显示全部楼层
多谢大家啦,看这样的贴子很好,祝福这些有识同仁
点评回复

使用道具 举报

发表于 2008-7-13 17:35:00 | 显示全部楼层
stack overflow....
create mmi task时有stack的限制的, 一般4k.
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-6 09:25 , Processed in 0.049286 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表