Thank you Baerten, My problem was in C++, the code you show is C#. I have since worked it out the hard way (never did find any good documentation). In C++ the correct use is: String^ data = "one,two,three"; array<>^ separator = {','}; array<>^ parts; parts = data->Split (separator); As you can see, C++ syntax is just a bit opaque, (there should be just single arrow symbols where I show double). The module using this works fine for me now. However, now it causes a memory corruption in old legacy code that has worked for years. --- I'm not even sure how to describe it to forma help question. Such is life. Thank you again, and welcome to the world inside!!