设计简单的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. 堆栈或堆栈分配不正确
- 7. C - 堆栈分配的链表
- 8. 基于C++堆栈的对象分配
- 9. C++ 11堆栈分配vs Unique_Ptr
- 10. 堆栈或堆上的对象分配
- 11. 堆/堆栈上的类成员分配?
- 12. 动态分配stdlib堆栈?
- 13. 堆栈帧内存分配
- 14. PIMPL和堆栈分配
- 15. 堆栈溢出:在堆栈空间中复制临时分配?
- 16. 堆VS数据段VS堆栈分配
- 17. 从堆分配时堆栈溢出
- 18. 检测堆栈或堆分配
- 19. C++在堆和堆栈上分配内存?
- 20. 覆盖率和C++:堆(与新)与堆栈分配
- 21. 堆栈上字符串的分配
- 22. 基于堆栈的内存分配
- 23. 明确堆栈分配的数据
- 24. 在C#中分配任务堆栈在哪里?
- 25. 性能差B在C + +/w的堆中分配对象和堆栈分配的对象
- 26. C++中的清除堆栈
- 27. C中的堆栈实现
- 28. c中的堆栈损坏
- 29. C++堆栈分配的对象分配和析构函数调用
- 30. WrapperPointer类和C++堆栈分配的对象
这取决于“一切”的含义。 – AraK 2010-03-14 08:27:42
如果你要用当地人和参数去做所有事情,为什么你首先使用C?改用ML,Haskell,Erlang等功能语言代替。 – 2010-03-14 08:30:23
与之相对,你在想什么?全局变量或堆上的数据? – 2010-03-14 08:37:27