可能重复:
What and where are the stack and heap什么是堆栈,为什么malloc防止溢出?
我在C语言新,我主要使用Python的日常使用,所以我不是很熟悉这些概念。之前我在这里问过的问题:Big array gives segmentation error in C让我想到这个问题。那么,什么是堆栈,以及malloc与它的关系呢?
可能重复:
What and where are the stack and heap什么是堆栈,为什么malloc防止溢出?
我在C语言新,我主要使用Python的日常使用,所以我不是很熟悉这些概念。之前我在这里问过的问题:Big array gives segmentation error in 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
上进行分配。
malloc
不能防止堆栈溢出。不过度使用堆栈是防止溢出的原因。当然,如果你想避免过多的堆栈使用,很可能你需要在其他地方存储你的工作数据,这就是malloc
进来...