DSP

关于DSP中堆heap和栈stack的理解

2019-07-13 09:37发布

之前一直不是很清楚堆和栈之间的区别,因为在windows下不是很注意区分它们。今天查了些资料,关于C6000DSP堆和栈有如下区别: stack - 又称系统栈(system stack),用于: 保存函数调用后的返回地址; 给局部变量分配存储空间; 传递函数参数; 保存临时结果; heap - 编译器提供的运行时支持库的一些函数(如malloc/calloc/realloc),允许运行时为变量动态分配存储器。这些存储器就放置在.system段的全局池(global pool)或堆(heap)中。 这个动态存储池的大小仅仅受限与系统中实际的存储容量。 这2个选项都可以在project-build options的连接器选项中设置 《TMS320C6000系列DSP编程工具与指南》P126 综上,简单比较堆和栈的区别是:堆是程序中动态申请内存的地方,栈是函数嵌套调用,中断,任务切换时保护现场时存储相关寄存器的地方。