設計簡單的C程序來分配堆棧中的所有內容還是大部分內容都是不好的方式?C中的堆棧分配
C中的堆棧分配
回答
如果我們把重點放在SIMPLE程序上,就像你說的那樣,那麼不,那不是那麼糟:)你也可以看看C99可變長度數組(這裏是一個簡單的例子:http://en.wikipedia.org/wiki/Variable-length_array)。
+1提及VLA。我在一個小型項目中使用它們,並且他們大部分時間幫助避免堆分配。 – helpermethod 2010-03-14 10:04:00
不需要,除非你有變量具有不固定的大小。這樣的代碼可能會很快導致堆棧溢出。
堆棧分配比堆分配便宜。從堆棧分配和取消分配只是簡單的計數器增量和遞減函數(或更準確地說:範圍)進入/退出。堆分配意味着在可能分散的地址空間中找到足夠大的內存塊。由於該堆棧分配幾乎總是可取的。
不使用堆疊中的主要理由是:
- 所需的尺寸是未知的,直到運行時間。
- 需要大量內存(兆字節);這可能會導致堆棧大小通常限制爲兩位數兆字節的系統出現問題。
或者如果需要大量內存(千字節)這可能會導致堆棧大小通常限制爲兩位千字節數的系統(例如PC上的設備驅動程序或大多數嵌入式系統中的任何程序)出現問題。 – Dipstick 2010-03-14 09:11:44
堆的主要優點是可以動態分配它。如果你不知道你需要的變量的大小:堆。
如果你的程序很簡單,你可能不需要在堆上分配一個變量;但是選擇並不取決於程序的複雜性,它取決於您對變量的需求。 如果您需要通過多種功能訪問/修改整個工作流程中的變量,那麼它在堆上更好。當你不再需要它時,你會釋放它。 如果變量只是一個選項結構或計數器,堆棧對它來說是完美的。
- 1. C堆棧分配
- 2. C++堆棧與堆分配
- 3. C++循環堆棧分配
- 4. C++中的動態堆棧分配
- 5. C++是堆棧還是堆分配?
- 6. 對象分配在堆棧或堆C++
- 7. 在C#中分配堆棧大小?
- 8. 從堆棧中分配 - 在C
- 9. c/C++在堆棧上分配
- 10. 有關堆棧分配的問題C
- 11. C - 堆棧分配的鏈表
- 12. 基於C++堆棧的對象分配
- 13. 堆棧或堆棧分配不正確
- 14. 內存分配,堆棧和堆棧
- 15. 堆棧/堆中的c#內存分配發生
- 16. 從堆棧分配C++ std :: bad_alloc?
- 17. 堆棧在c分配空間
- 18. C++ 11堆棧分配vs Unique_Ptr
- 19. 堆/堆棧上的類成員分配?
- 20. 堆棧或堆上的對象分配
- 21. 受保護的堆對象堆棧vs堆棧分配
- 22. 在堆上分配vs在遞歸函數中分配堆棧
- 23. 分配在堆或棧上?
- 24. 分配struct堆棧:Pthread_create
- 25. 線程堆棧分配
- 26. 堆棧幀內存分配
- 27. PIMPL和堆棧分配
- 28. 動態堆棧分配
- 29. 動態分配stdlib堆棧?
- 30. Java堆和堆棧內存分配
這取決於「一切」的含義。 – AraK 2010-03-14 08:27:42
如果你要用當地人和參數去做所有事情,爲什麼你首先使用C?改用ML,Haskell,Erlang等功能語言代替。 – 2010-03-14 08:30:23
與之相對,你在想什麼?全局變量或堆上的數據? – 2010-03-14 08:37:27