为什么调用c语言程序前要设置堆栈?堆栈有什么用?没设置又会怎么样?堆栈是什么?还请各位嵌入式大神讲

为什么调用c语言程序前要设置堆栈?堆栈有什么用?没设置又会怎么样?堆栈是什么?还请各位嵌入式大神讲一讲

堆是用来申请不连续内存的数据区域,比如链表,地址不连续,而是通过指针串在一起形成一个连续的结构,c语言中用malloc函数申请的内存都在堆上,申请过不用时记得要用free函数释放掉,不然内存泄露。

而栈的速度比堆的快,数组和局部变量都是在栈上分配,效率比较高。

另外还有自由存储区、全局/静态存储区和常量存储区,此处不一一讲解了。

在启动文件里都要设置堆和栈的大小,这样合理的分配才不会造成资源的浪费。假如你代码中使用的链表占用空间比较大,这时你就需要把堆设置大一点。假如你使用的数组比较大,就得把堆设置大一点。最简单的方法可以测试一下栈大小,定义一个很大的数组int a[m]; m足够大时就会栈溢出。

想更多的了解c语言具体内存分区的话去百度吧,就帮你到这里了
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答