When you create a GArray with that constructor, you create with some number of objects.
So, if str consists of 32 characters, you intialize result to point to a GArray<GString> object with 32 Gstrings already in it. When you Add to your GArray object, you add more GString objects.
Also, your Split function should probably return a GArray by value.
I'm now assuming the size of the GArray in this way: in the array there will be as many strings as the number of splitters + 1
I take it you made no changes to GArray type? If not, and you create a GArray of size 4, it begins with 4 GString objects in it. And, if you Add other objects to it, those will be in addition to those already contained by the GArray object.