Bei Delphi 6 schon weil dort 1 Zeichen einem Byte entspricht.
Delphi-Quellcode:
var
s : string;
begin
s := StringOfChar('*', 8 * 1024 * 1024); // ein String mit 8MByte bestehend aus lauter Sternchen
Ein dynamischer String hat noch einen gewissen Overhead im Speicher.
Am Ende hängt immer noch ein #0-Zeichen dran und die Verwaltungsstruktur für den String benötigt zusätzlich noch 12 Bytes.