2011-10-06 146 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進來...