Articles

Array index out of bounds-C++ Forum

vektorer har många bra saker för dem.
men C++ – arrayer, om man använder en standard påtvingad kompilering, måste ha en känd storlek vid kompileringstiden (kan inte vara en variabel, bara ett kompileringstid känt värde som enum, const int, bokstavligt tal etc.) Du bör alltid veta storleken på din array och aldrig slut på gränserna på det på grund av detta. Så medan du borde gynna vektorer i allmänhet, kommer du ibland att ärva kod som har arrays, eller måste hantera en C-fil i din sammanställning eller liknande, så du behöver veta grunderna. Vanligtvis är storleken en enum eller const någonstans med ett namn som du kan använda när du loopar för att hålla det säkert. Om du använder arrays av någon anledning, använd den här tanken och du kommer att undvika de flesta problem utanför gränserna. De andra problemen kan också hända på vektorer – de där du beräknade indexet och goofed upp det, men vektorer ger dig verktygen för att kontrollera detta medan arrays har färre alternativ för hantering av buggar.
C++ är ett högpresterande språk. Det gör inte onödigt arbete bakom kulisserna i allmänhet, du måste få det att göra det om du vill ha det. Så om du vill ha gränskontroll behöver du kod för att göra det. du kan gå utanför gränserna på en vektor också, förresten.
vektor<int >duh = {1,2,3};
cout << duh; //out of bounds. krasch, troligen.
det är inte den vektorn som kontrollerar gränserna eller’ säkrare ’ när du förstör. Dess att den har sin egen hanterade storlek variabel så messing upp bör vara svårare, om du skriver din kod noggrant.