Beim Initialisieren wird das Array nicht mit Nullen gefüllt.
Das ist schlichtweg falsch!
SetLength
ruft intern
DynArraySetLength
aus
System.pas auf. Dort steht dann (in XE7 Zeile 33931-33933) folgender Code:
Delphi-Quellcode:
// Set the new memory to all zero bits
if newLength > oldLength then
FillChar((PByte(p) + elSize * oldLength)^, elSize * (newLength - oldLength), 0);