test(const atext: string);
var
s: string;
p1: Pointer;
pc: pchar;
c: char;
begin
s := AText;
p1 := @s[1];
pc := PChar(s);
s := '';
c := pc^;
end;
Я считаю что должен, потому что
s:= ''
обнуляет счётчик ссылок внутри и вызывает freemem
Где я не прав?
Потому что вам никто не запрещает лазить в память по протухшим указателям
rangecheck стоит же
pc у вас это просто указатель, у него нет никакого диапазона
Обсуждают сегодня