зачем заполнять данные в буфере, увеличиваться от низкого до высокого адреса - PullRequest
0 голосов
/ 08 октября 2018

Когда мы вызываем функцию, ее стек выглядит примерно так:

LOW MEMORY ADDRESS
localvariables
saved frame pointer
return address
.... 
HIGH MEMORY ADDRESS

Почему он заполняет данные в буфер в направлении от низкого до высокого адреса памяти?

Многие людискажите мне: «потому что это так работает», но я думаю, что кто-то в той или иной книге написал, почему у нас такое поведение, но я не могу найти хороший ресурс о.

1 Ответ

0 голосов
/ 08 октября 2018

Я думаю, что вы неправильно понимаете или путаете несколько вещей.

  1. в вашем примере вы, кажется, перепутали функциональность операционной системы с работой программы и компилятора.

Если вы выделяете несколько адресов памяти, всегда есть более низкий адрес и более высокий адрес.Вы можете изменить это только записав все по одному и тому же адресу, что может привести к очень ограниченной или бесполезной программе.

Есть много реализаций буфера, в зависимости от вашего языка программирования, фреймворка, ...

, какой вы выберете, зависит от вас, если вы используете буфер, который уже реализован в библиотекеКонечно, у вас есть следующие правила, по которым этот буфер добавляет данные, потому что именно так работает THIS определенный буфер.Если вас не устраивает то, как это делается, вам нужно изменить выбранный буфер или даже целую библиотеку или в крайнем случае написать свой собственный буфер.

как добавить данные в буфер

некоторые буферы позволяют добавлять данные в любом месте буфера, например, за счет производительности или надежности.Если вы хотите сделать это таким образом, решать только вам.

...