Memory 堆栈增长和堆增长的方向

Memory 堆栈增长和堆增长的方向,memory,operating-system,stack,heap,processor,Memory,Operating System,Stack,Heap,Processor,在某些系统中,堆栈向上增长,而堆向下增长;在某些系统中,堆栈向下增长,堆向上增长。但是,哪一个是最好的设计?这两种特定设计中的任何一种都有编程优势吗?哪种方法最常用,为什么没有标准化以遵循单一方法?它们是否有助于/针对特定场景。如果是,它们是什么?我读过米罗·萨梅克(Miro Samek)和其他各种嵌入式大师的著作,他们似乎不赞成在嵌入式系统上进行动态分配。这可能是由于复杂性和内存泄漏的可能性。如果您有一个绝对不会失败的项目,那么您可能希望避免使用Malloc,这样堆就会很小。其他非关键任务系统

在某些系统中,堆栈向上增长,而堆向下增长;在某些系统中,堆栈向下增长,堆向上增长。但是,哪一个是最好的设计?这两种特定设计中的任何一种都有编程优势吗?哪种方法最常用,为什么没有标准化以遵循单一方法?它们是否有助于/针对特定场景。如果是,它们是什么?

我读过米罗·萨梅克(Miro Samek)和其他各种嵌入式大师的著作,他们似乎不赞成在嵌入式系统上进行动态分配。这可能是由于复杂性和内存泄漏的可能性。如果您有一个绝对不会失败的项目,那么您可能希望避免使用Malloc,这样堆就会很小。其他非关键任务系统可能正好相反。我不认为会有一个标准的方法

可能它只是依赖于处理器:它是否支持堆栈向上或向下?

在非常幼稚的实现中,堆栈只在某个方向上“增长”。正如Paul R.提到的,堆栈的增长方向是由硬件定义的——在英特尔CPU上,它总是朝着更小的地址“即“向上”

不是真的。我一直在理解内存布局,这个查询突然出现了!一般来说,堆不会增长——这实际上只是您感兴趣的堆栈增长方向,这是特定于体系结构的。