Sergei I. Gorelkin » 17.05.2007 02:49:54
Комментарии? Пожалуйста!
1. Не так давно я обсуждал этот вопрос с разработчиками - они утверждают, что ключевое слово const - это совсем не передача по ссылке, в отличие от var. Оно лишь говорит компилятору, что внутри функции аргумент изменяться не будет, поэтому локальную копию делать не надо. А сам аргумент передается так, как принято в целевой ОС. Разница появляется, когда аргумент - структура. В Windows и Linux, к счастью, принято структуры передавать по указателю. А в какой-то более экзотической системе, кажется они приводили пример Solaris на PowerPC, принято структуры запихивать в стек целиком (вот больная на голову, подумал я, узнав об этом).
2. В случае передачи по значению WideString в Windows - происходит копирование всей строки, потому что они не имеют счетчика ссылок. По этой причине они вообще на каждый чих копируются, блин... причем используется не fpc менеджер памяти (весьма шустрый), а системный.