Articles

Array indeks out of bounds-C++ Forum

vektorer har en masse gode ting går for dem. men c++ arrays, hvis du bruger en standard håndhævet kompilering, skal have en kendt størrelse på kompileringstidspunktet (kan ikke være en variabel, kun en kompileringstid kendt værdi som enum, const int, bogstaveligt tal osv.) Du skal altid kende størrelsen på dit array og aldrig løbe tør for grænser på det på grund af dette. Så mens du generelt bør favorisere vektorer, vil du undertiden arve kode, der har arrays, eller skal håndtere en C-fil i din kompilering eller lignende, så du skal kende det grundlæggende. Typisk er størrelsen en enum eller const et sted med et navn, som du kan bruge, når du løber for at holde det sikkert. Hvis du bruger arrays af en eller anden grund, skal du bruge denne ide, og du vil undgå de fleste out of bounds problemer. De andre problemer kan også ske på vektorer-dem, hvor du beregnede indekset og goofed det op, men vektorer giver dig værktøjerne til at kontrollere dette, mens arrays har færre muligheder for at håndtere fejl.
c++ er et højtydende sprog. Det gør ikke unødvendigt arbejde bag kulisserne generelt, du skal få det til at gøre det, hvis du vil have det. Så hvis du vil have grænsekontrol, har du brug for kode for at gøre det. du kan også gå uden for grænserne på en vektor forresten.
vektor <int> duh = {1,2,3};
cout << duh; //out of bounds. crash, sandsynligvis.
det er ikke den vektor, der kontrollerer grænserne eller ‘sikrere’, når du ødelægger. Dens, at det har sin egen administrerede størrelse variabel så rode op bør være sværere, hvis du skriver din kode omhyggeligt.