The only reason I used pointers is for some reason in my early tests if I didn't create it via New, when making another struct in the loop it'd be like it was pointing to the previous struct, as all of its' values were there. I may of been confused or using bad testing data though.
From what Tauwasser's told me and from my own findings it seems my problem was a twofold thing.
Firstly, as I was using a struct the sizeof call would report invalid lengths due to the padding some compilers use to ensure all variables are aligned in memory, so I changed it to a class to get around this.
Secondly, I found out something I didn't know about before about functions - when you create variables inside a function call, that call has its' own stack which the variables are created on, which is destroyed when you return, so any variables created are destroyed at the end. I was storing the filename of the VFS into a new variable, and creating my Filesystem vector in my initializer, so this was causing the main bug, which I fixed by making the variables static.
I'm guessing the devkitppc compiler is stricter than the VC++ compiler, it's strange how bog standard gcc seems to be as liberal as VC++, yet devkitppc's modified gcc is anal about this kinda stuff.
Thanks for the help guys