什么是堆栈,为什么malloc防止溢出?

可能重复:
什么和堆栈和堆在哪里

我是C语言新手,我大多使用Python进行日常使用,所以我对这些概念并不是很熟悉。 我在这里问的前一个问题是:大数组给C中的分段错误带来了这个问题。 那么,什么是堆栈,以及malloc与它的关系呢?


阅读关于堆栈和堆在这里:http://ee.hawaii.edu/~tep/EE160/Book/chap14/subsection2.1.1.8.html。

malloc从堆中分配内存而不是堆栈(了解堆栈和堆)。 这就是为什么它可以防止堆栈溢出:)。 当你声明一个long long类型的数组时,它有一个固定的大小分配给它,并且这个内存是从栈中取出的。但是malloc根据你的需求动态地分配大小(即需要存储在数组中的元素的数量)。

PS:在python内存分配中照顾你。 你被尊为程序员:D。 C更靠近系统,因此您必须具有相当数量的系统知识才能更好地理解C的工作。


malloc在堆上分配空间,而不是在堆栈上。

堆栈是用于每个函数的局部变量和参数的空间。

换句话说,每个函数都使用栈作为局部变量。 Malloc在堆上使用完全不同的内存。


wiki对call_stack有一个很好的解释。

malloc帮助您从系统中申请内存,该系统在heap分配。

链接地址: http://www.djcxy.com/p/2275.html

上一篇: What is a stack and why is malloc prevent it from overflowing?

下一篇: what do heap and stack mean in C++?