Этот код
procedure MyThreadTestA(const AStr: string);
Быстрее, чем
procedure MyThreadTestB(AStr: string);
При выполнении одной и той же работы оба передают указатель.
Однако версия B "правильно" обновляет номер ссылки AStr
и создает копию, если я ее меняю.
Версия A передает только указатель, и только компилятор мешает мне изменять AStr
.
Версия A небезопасна, если я делаю грязные трюки в Assembler или иным образом обойти защиту компилятора, это хорошо известно, но...
Передано AStr
по ссылке в качестве параметра const
.
Что произойдет, если счетчик ссылок AStr
в каком-то другом потоке будет равен нулю, а строка будет уничтожена?