Articles

Array index out of bounds – C++ Forum

vectoren hebben veel goede dingen voor hen.
maar c++ arrays, als een standaard geforceerde compilatie wordt gebruikt, moeten een bekende grootte hebben tijdens het compileren (kan geen variabele zijn, alleen een bekende waarde zoals enum, const int, letterlijke getal, enz.) Je moet altijd de grootte van je array kennen en nooit buiten de grenzen lopen vanwege dit. Dus terwijl je vectoren in het algemeen zou moeten bevoordelen, zul je soms code erven die arrays heeft, of moet omgaan met een C-bestand in je compilatie, of iets dergelijks, dus je moet de basis kennen. Meestal is de grootte een enum of const ergens met een naam die u kunt gebruiken bij het loopen om het veilig te houden. Als je arrays gebruikt om welke reden dan ook, gebruik dan dit idee en je zult de meeste out of bounds problemen vermijden. De andere problemen kunnen ook op vectoren gebeuren – degene waar je de index hebt berekend en het hebt verpest, maar vectoren geven je de tools om dit te controleren terwijl arrays minder opties hebben voor het verwerken van bugs.
c++ is een taal met hoge prestaties. Het doet geen onnodig werk achter de schermen in het algemeen, je moet het doen dat als je het wilt. Dus als je grenzen wilt controleren, heb je code nodig om dat te doen. je kunt trouwens ook buiten de grenzen gaan op een vector.
vector <int> duh = {1,2,3};
cout << duh; //out of bounds. crash, waarschijnlijk.
Het is niet dat de vector de grenzen controleert of ‘veiliger’ als je het verknoeit. Het is dat het zijn eigen beheerde grootte variabele dus knoeien moet moeilijker zijn, als u het schrijven van uw code zorgvuldig.