Example for a 2-dimensional pointer (resizing the second dimension while preserving elements):
Code: Select all
Dim As Integer maxIndex(1 To 2) = {2, 3}
Dim As Integer Ptr Ptr P = New Integer Ptr [maxIndex(1)+1]
For I1 As Integer = 0 To maxIndex(1)
P[I1] = New Integer [maxIndex(2)+1]
Next I1
For I1 As Integer = 0 To maxIndex(1)
For I2 As Integer = 0 To maxIndex(2)
P[I1][I2] = I1*10 + I2
Next I2
Next I1
For I1 As Integer = 0 To maxIndex(1)
For I2 As Integer = 0 To maxIndex(2)
Print P[I1][I2],
Next I2
Print
Next I1
Print
maxIndex(2) = 4
For I1 As Integer = 0 To maxIndex(1)
P[I1] = Reallocate(P[I1], (maxIndex(2)+1)*Sizeof(Integer))
Next I1
For I1 As Integer = 0 To maxIndex(1)
P[I1][maxIndex(2)] = I1*10 + maxIndex(2)
Next I1
For I1 As Integer = 0 To maxIndex(1)
For I2 As Integer = 0 To maxIndex(2)
Print P[I1][I2],
Next I2
Print
Next I1
For I1 As Integer = 0 To maxIndex(1)
Delete [] P[I1]
Next I1
Delete [] P
Sleep
Code: Select all
0 1 2 3
10 11 12 13
20 21 22 23
0 1 2 3 4
10 11 12 13 14
20 21 22 23 24
These following instructions can be mixed if datatype has no destructor:
Code: Select all
Dim As datatype Ptr p = New datatype [i]
p = Reallocate(p, (i+j)*Sizeof(datatype))
Delete [] p