求助一个关于单片机堆栈的问题
最近调stm32的程序,经常需要在函数里面定义很大的数组用来存临时数据。最开始是用栈来存储,把stack设置到10k。
后来感觉不妥,又改用动态内存的方式,用freertos里面的heap4.c。(不用freertos)。
最近突然有点迷惑了,栈设置的特别大,会不会有什么缺点?
都是使用片内sram的情况下,函数里面临时大数组用栈好还是用动态内存好?
请大佬解惑
谢谢!
你这算什么大,我堆栈都64K,堆栈肯定优于动态内存分配,当然这里说的是针对你这情况 ayb_ice 发表于 2023-3-7 09:36
你这算什么大,我堆栈都64K,堆栈肯定优于动态内存分配,当然这里说的是针对你这情况 ...
内存一共64k。。。。 圣骑士by 发表于 2023-3-7 12:51
内存一共64k。。。。
可以搞 一半做堆栈 内存还需要回收?
我都是用全局联合变量,静态分配了。
xch 发表于 2023-3-7 19:29
内存还需要回收?
我都是用全局联合变量,静态分配了。
全局联合变量 是定义一个union 把大变量都放里面吗?
没看懂。麻烦多说点呗 圣骑士by 发表于 2023-3-8 08:43
全局联合变量 是定义一个union 把大变量都放里面吗?
没看懂。麻烦多说点呗 ...
互斥的多任务可以共享全局内存 全局变量的好处:速度快,编译的时候就可以明确内存占用量,不用考虑溢出,
而且一般单片机都是单线程吧,不会出现数据被同时修改的情况, 圣骑士by 发表于 2023-3-8 08:43
全局联合变量 是定义一个union 把大变量都放里面吗?
没看懂。麻烦多说点呗 ...
一般是先定义几个由临时变量组成的结构体。要求不同结构体中的变量不会同时使用即可。
然后,把上述几个结构体放入一个联合体。
页:
[1]