Static array en Dynamic Array

Status
Niet open voor verdere reacties.

Chargeotto

Gebruiker
Lid geworden
22 aug 2007
Berichten
147
Daarnet zat ik een boek te lezen over C++, en daarin stond een stuk geschreven over Static Arrays en Dynamic arrays.
Het principe van beiden snap ik wel, bij de 1 hoef je niks zelf te doen met het geheugen, en bij de ander moet je zelf ook op het geheugen letten.
Als ik het goed begrijp, is dat een verschil tussen die 2.

En nu vraag ik me af. Waarom zou je kiezen voor een dynamic array, in plaats van een static array?
Op zich snap ik de basis hoe ze werken wel, maar niet waarom je, voor de 1 of voor de ander zou kiezen. Hoop dat iemand dat duidelijk kan maken.
 
Stel je voor dat je een array wilt gebruiken om waarden in op te slaan welke je uit een bestand leest.
Wanneer je zeker weet dat er bijvoorbeeld ALTIJD 50 waarden in het bestand zullen staan, kun je dus veilig een statische array aanmaken van 50 elementen groot.
Maar wat vaker voorkomt in het 'echte leven' is dat je geen idee hebt hoeveel waarden er in het bestand zullen staan. Je kunt dat kiezen om gewoon een statische array te gebruiken die erg groot is, zodat je vrij zeker weet dat alle waarden er wel in gaan passen. Maar de nettere oplossing is om een dynamische array te maken die 'meegroeit' met het aantal waarden wat je er in opslaat.

Ik wil hier wel graag even melden dat het in C++ in vrijwel alle gevallen beter is om een vector te gebruiken in plaats van zelf een dynamische array te maken. Bij dynamische arrays moet je extreem goed opletten dat je geen geheugenlekkage of -corruptie krijgt. De vector lost dit alles voor je op :) Ik heb in de afgelopen 4 jaar geen enkele keer een dynamische array gebruikt (behalve voor een testje of 2).
 
Stel je voor dat je een array wilt gebruiken om waarden in op te slaan welke je uit een bestand leest.
Wanneer je zeker weet dat er bijvoorbeeld ALTIJD 50 waarden in het bestand zullen staan, kun je dus veilig een statische array aanmaken van 50 elementen groot.
Maar wat vaker voorkomt in het 'echte leven' is dat je geen idee hebt hoeveel waarden er in het bestand zullen staan. Je kunt dat kiezen om gewoon een statische array te gebruiken die erg groot is, zodat je vrij zeker weet dat alle waarden er wel in gaan passen. Maar de nettere oplossing is om een dynamische array te maken die 'meegroeit' met het aantal waarden wat je er in opslaat.

Ik wil hier wel graag even melden dat het in C++ in vrijwel alle gevallen beter is om een vector te gebruiken in plaats van zelf een dynamische array te maken. Bij dynamische arrays moet je extreem goed opletten dat je geen geheugenlekkage of -corruptie krijgt. De vector lost dit alles voor je op :) Ik heb in de afgelopen 4 jaar geen enkele keer een dynamische array gebruikt (behalve voor een testje of 2).

okee bedankt,:thumb: dan ga ik kijken hoe vectoren werken. Toevallig gaat het volgende hoofdstuk na arrays gelijk al over vectoren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan