当我们调用一个函数时,其堆栈类似于:
LOW MEMORY ADDRESS
localvariables
saved frame pointer
return address
....
HIGH MEMORY ADDRESS
为什么它将数据从低到高的地址填充到缓冲区中?
许多人告诉我:“因为这是这样工作的”,但是我认为某本书或其他书中的某人已经写了为什么我们有这种行为,但是我找不到很好的资源。
答案 0 :(得分:0)
我认为您在误解或混淆了一些事情。
如果您分配多个内存地址,则总会有一个较低的地址和一个较高的地址。您只能通过将所有内容写入相同的地址来更改它,这可能会导致程序非常有限或无用。
选择哪种方法取决于您,如果您使用的是库中已实现的缓冲区,那么您当然要遵循该缓冲区添加数据的规则,因为这就是这特定的缓冲区工作。如果您对完成此操作不满意,则需要更改选定的缓冲区,甚至更改整个库,或者在极端情况下,请编写自己的缓冲区。
某些缓冲区允许您以例如性能或可靠性。如果您希望那样做,则取决于您。