Этот аспект относится
к целостности данных или к их защите от непреднамеренного измене-
ния или порчи. При типовом использовании данные, передаваемые по
значению,являются копией действительных данных.
Как таковая, вызы-
ваемая программа может манипулировать данными по любому пути без
изменения данных в вызывающей программе. С другой стороны, если
вызываемая программа принимает адрес данных, по которому программа
затем может изменять данные, возможно изменение функционирования
вызывающей программы.
Данные, передаваемые по значению, рассматри-
ваются затем как защищенные, а данные, передаваемые по адресу,
рассматриваются как подвергаемые риску.
Удивительно, что переменные, передаваемые в регистр, иногда
рассматриваются как передаваемые по адресу, поскольку регистры в
аппаратных средствах являются простыми специализированными адре-
сами. Это различие делается потому, что данные в регистрах под-
вержены риску, если подпрограмма или функция изменят данные в ре-
гистре и это повлияет на основную программу.
Относительно степени подверженности данных постороннему воз-
действию отсутствуют жесткие и прочные правила.
русско английский словарь, asplinux 11, avast antivirus, kaspersky, Навигационные системы, .
panda activescan
Второе преимущество заключается в том, что прог-
рамма становится более общей, поскольку указание другого адреса
создает новый набор данных. Третье преимущество состоит в том, что
вызываемая программа может непосредственно манипулировать данными
для возврата значения в то же самое место вызывающей программы,
которое содержало первоначальное значение. Если данные, подлежащие
передаче, не размещены в памяти (т.е. являются непосредственными
данными), иногда могут возникнуть проблемы. В этих случаях (или,
если обнаружено их простое несоответствие для передачи всех требу-
емых адресов в стек) может быть использован тип смешанного пара-
метра: блок аргументов.
Блок аргументов или параметров является специальной формой пе-
редачи по адресу. В этом случае требуемые аргументы содержатся в
непрерывном участке памяти. Однако, в отличие от передачи через
общую область памяти, вызывающая процедура не имеет полных сведе-
ний об этом блоке. При вызове процедуры в качестве параметра ей
передается адрес этого блока. Хотя может оказаться неудобным раз-
мещать все требуемые аргументы в блоке, но это дает возможность
избежать необходимости размещения всех этих значений в стеке. Если
блок уже существует для других целей, то передача параметров через
блок аргументов имеет еще больший смысл.
Защита целостности передаваемых данных
Имеется другой аспект опции "передача по ...", который являет-
ся очень важным и облегчающим использование.