[fpc-pascal] Does SetLength clear its elements to zeros?

Jonas Maebe jonas.maebe at elis.ugent.be
Fri Dec 11 11:42:18 CET 2015


Dennis wrote on Fri, 11 Dec 2015:

> I just tested, SetLength a string  does not zero its elements (the chars).
>
> However, SetLength a dynamic array seems to zero its elements.

Dynamic arrays are indeed zeroed when changing the length, while  
strings are not. For dynamic arrays, it is necessary anyway in case it  
has reference counted elements. Maybe for consistency, it's always done.

Additionally, changing the length of the string without afterwards  
overwriting the data between the previous and new last character seems  
something that would happen very seldom (why did you increase the  
length if you didn't need to write all characters -- any operation  
with the string, such as writing or concatenating it, will use those  
characters anyway because the length indicates they're part of the  
string).

The above are mostly guesses though.


Jonas



More information about the fpc-pascal mailing list