Das mit C# hat aber andere Gründe, genauso wie bei Java ist in C# der Heap ein stack. Resizing ist eh also nicht möglich und direkten Speicherzugriff erlaubt C# (und java) auch nicht.mschnell hat geschrieben:Scheint wohl ein generell schwieriges Problem zu sein. In C# und vielen anderen Sprachen sind Strings "reaonly": wenn man einen String verändern will, muss man immer einen neuen machen.
-Michael
In C++ geht das ganz einfach, da kann man einen Char array in einen shared (oder unique) pointer reinsetzen, die machen intern referenzzählung, und garantieren das die threadsicher ist.
Alles was dier FPC machen müsste damit das auch da funktioniert ist, zu jedem string neben ReferenzCount, Länge und Daten noch eine CriticalSection hinzuzufügen (ein String ist intern ja nur ein record, also muss da nur ein feld mehr in den record), und bei jeder operation auf strings die in ein try-finally setzen in der der string gelockt wird bevor was gemacht wird.
Könnte man ja auch einen neuen typen für einführen (ThreadsafeString oder so) oder das man das über compilerswitch ein/aus stellen kann