What happens, if you add
vDataList.Capacity := vMax;
before filling vDataList.
vDataList is using array internally, but it is constantly grown in your example. It might be the cause of those issues.
Also, you really should run those test so, that one test is only one run on that execution of test program. Otherwise testing array might make use of memory that was already allocated during list testing (Delphi memory manager does not return memory to windows, when it is freed.