Спасибо за ответы. Похоже, оно действительно работает. Но не всегда.
exp_1: Я проверил, твой пример также себя ведет.
А именно:
Не работает (на этом я и тестировал вначале):
.....
var p:pchar;
begin
p:='ABCDEFG';
JustTest(p);
...
end;
Работает:
.....
var p:pchar;
begin
p:=nil;
reallocmem(p,8);
JustTest(p);
...
end;
И дело здесь не в ассемблере. Можно просто попытаться сделать что-то вроде p[0]:='A' внутри JustTest. Получится то же самое. Присваивание не проходит, если p задана присваиванием константы.
Я думал, что память выделяется аналогично в обоих случаях. Это не так? Если сделать p:='ABCDEF', то p станет указателем на константу что ли, и запись в нее чем-то пресекается?