2011-10-06 77 views

回答

1

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

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

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

0

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

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

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

0

wiki对call_stack有个很好的解释。

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

0

malloc不能防止堆栈溢出。不过度使用堆栈是防止溢出的原因。当然,如果你想避免过多的堆栈使用,很可能你需要在其他地方存储你的工作数据,这就是malloc进来...