devxlogo

Quickly clear a portion of an array

Quickly clear a portion of an array

The fastest way to clear an array is to ReDim (if the array is dynamic) or Erase it (if the array is Static). However, if you want to clear a portion of an array, it seems that you must code a For-Next loop.

If you are dealing with numeric arrays, there is a faster alternative, based on the ZeroMemory API function which, as it names implies, can fill a memory area with zeroes. See how you can use this function to clear a sub array of Longs:

Private Declare Sub ZeroMemory Lib "kernel32" Alias "RtlZeroMemory" (dest As _    Any, ByVal Bytes As Long)' Declare an array and fill it with dataDim a(1000) As LongFor i = 1 To UBound(a)    a(i) = iNext' Clear 100 elements, starting at a(200)    ZeroMemory a(200), 100 * Len(a(1))

Note that the number of bytes to be cleared is given by the product of the number of elements to be cleared multiplied by the length of each element. Using the Len() function ensures that the above code works even if you change the type of the array.

You can use this approach with any numeric array, as well as Variant arrays that contain only numbers (including the Decimal subtype) and arrays of User Defined Types that contains only numbers and fixed-length strings. If you use the ZeroMemory function with variable-length strings or objects what you get is a GPF.

See also  Why ChatGPT Is So Important Today
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist