A
Wenn man jetzt mit SetSize den Speicher allociert, dann dürfte dieser doch in einem zusammenhängenden Block liegen. Kann man dann trotzdem über diese Grenze hinaus das Array erweitern (dann wieder zu Lasten der Performance) oder ist da definitiv Schluss?
Nö, da ist nicht Schluss. Warum auch? Nur weil ich new float[100] mache, verbietet mir doch der PC nicht, danach new float[200] zu machen. Nichts anderes passiert, wenn Du SetSize(100) machst. Wenn die 100 nicht ausreichen, macht der CArray/vector einfach danach ein neues new und kopiert den alten Kram in das neu angelegte float[200] um und das alte zerstört er mit delete. Ist ja kein Hockuspockus. Die Container bedienen sich C++-Sprachmitteln. Der Vorteil ist nur, das man den ganzen Kram nicht selber implementieren muß und alles schon getestet und millionenfach von anderen Programmierern benutzt wurde. Und sich das ganze einfacher warten lässt, weil die Container jeder kennt und dokumentiert sind.