区别: 
堆:由程序员分配和释放
栈:由编译器自动分配和释放,存放函数的返回值,局部变量
使用技巧:
嵌入式系统中任务的栈很小,尽量不要将占用内存大的变量分配在栈上,也不要使用递归的方式来设计程序,以防栈溢出。
一个可执行的程序最重要的三个段:
.text:存放程序的代码
.data:初始化好的数据
.bss:没有初始化好的变量