FreeBasic Erase Keyword
last modified June 16, 2025
The FreeBasic Erase
keyword is used to clear or reset arrays.
It can empty dynamic arrays or reset fixed-size arrays to their default
values. This is useful for reusing arrays without redeclaring them.
Basic Definition
In FreeBasic, Erase
is a statement that operates on arrays.
For dynamic arrays, it deallocates memory and sets the array to zero
elements. For fixed arrays, it resets all elements to their default values.
The Erase
statement helps manage memory efficiently and
provides a clean way to reset array contents. It's particularly useful
when working with large arrays that need periodic clearing.
Erasing a Dynamic Array
This example shows how to erase a dynamic array, freeing its memory.
Dim numbers() As Integer ReDim numbers(5) For i As Integer = 0 To 5 numbers(i) = i * 10 Next Print "Before erase:" Print "Array size: "; UBound(numbers) - LBound(numbers) + 1 Erase numbers Print "After erase:" Print "Array size: "; UBound(numbers) - LBound(numbers) + 1
Here we create a dynamic array, fill it with values, then erase it. After erasing, the array has 0 elements. Attempting to access elements after erasing would cause an error since the array no longer exists.
Erasing a Fixed-Size Array
This example demonstrates erasing a fixed-size array.
Dim colors(4) As String colors(0) = "red" colors(1) = "green" colors(2) = "blue" Print "Before erase:" For i As Integer = 0 To 4 Print i; ": "; colors(i) Next Erase colors Print "After erase:" For i As Integer = 0 To 4 Print i; ": "; colors(i) Next
The fixed array maintains its size after erasing, but all elements are reset to empty strings (for string arrays) or zero (for numeric arrays). This is different from dynamic arrays which are completely deallocated.
Erasing a Multi-Dimensional Array
The Erase
statement works with multi-dimensional arrays too.
Dim matrix(2, 2) As Integer ' Fill matrix For i As Integer = 0 To 2 For j As Integer = 0 To 2 matrix(i, j) = i * 3 + j + 1 Next Next Print "Before erase:" For i As Integer = 0 To 2 For j As Integer = 0 To 2 Print matrix(i, j); " "; Next Print Next Erase matrix Print "After erase:" For i As Integer = 0 To 2 For j As Integer = 0 To 2 Print matrix(i, j); " "; Next Print Next
This example creates a 3x3 matrix, fills it with values, then erases it. After erasing, all elements are reset to 0. The array dimensions remain unchanged, only the contents are cleared.
Erasing an Array of User-Defined Types
Erase
also works with arrays of user-defined types.
Type Person name As String age As Integer End Type Dim people(2) As Person people(0).name = "Alice" people(0).age = 25 people(1).name = "Bob" people(1).age = 30 Print "Before erase:" For i As Integer = 0 To 2 Print people(i).name; " "; people(i).age Next Erase people Print "After erase:" For i As Integer = 0 To 2 Print people(i).name; " "; people(i).age Next
After erasing, all fields of the user-defined type are reset to their default values. Strings become empty, numbers become 0, and any nested types are similarly reset.
Erasing Multiple Arrays
You can erase multiple arrays with a single Erase
statement.
Dim a(5) As Integer Dim b(3) As String Dim c() As Double ReDim c(4) ' Fill arrays For i As Integer = 0 To 5 a(i) = i Next For i As Integer = 0 To 3 b(i) = "Item " & i Next For i As Integer = 0 To 4 c(i) = i * 1.5 Next Erase a, b, c Print "Array sizes after erase:" Print "a: "; UBound(a) - LBound(a) + 1 Print "b: "; UBound(b) - LBound(b) + 1 Print "c: "; UBound(c) - LBound(c) + 1
This example shows how to erase three different arrays with one statement. Fixed arrays maintain their size but are reset, while the dynamic array is completely deallocated. The comma-separated syntax is efficient for clearing multiple arrays at once.
Erasing and Reusing Dynamic Arrays
This demonstrates the full lifecycle of a dynamic array with erase.
Dim values() As Integer ' First allocation ReDim values(10) For i As Integer = 0 To 10 values(i) = i * 2 Next Print "First size: "; UBound(values) ' Erase and reuse Erase values ReDim values(5) For i As Integer = 0 To 5 values(i) = i * 3 Next Print "Second size: "; UBound(values) ' Final erase Erase values Print "Final size: "; On Error Goto error_handler Print UBound(values) Exit Sub error_handler: Print "Error: Array not allocated"
This shows how to erase a dynamic array and then reuse it with different dimensions. After the final erase, attempting to access the array causes an error, demonstrating that it's truly deallocated. Error handling is needed for safe array access checks.
Best Practices
- Memory Management: Always erase dynamic arrays when done to free memory.
- Fixed Arrays: Use erase to reset contents rather than manual loops.
- Error Handling: Check array bounds after erasing dynamic arrays.
- Performance: Erasing is faster than manual clearing for large arrays.
- Reuse: Erase and redimension dynamic arrays instead of redeclaring.
This tutorial covered the FreeBasic Erase
keyword with practical
examples showing its usage with different array types and scenarios.
Author
List all FreeBasic Tutorials.