Compiler-Optionen für Bound Checking Array Access in C Vector
Die C-Standardbibliothek stellt den Typ std::vector bereit, ein dynamisches Array, das sorgt für Speichersicherheit. Der Zugriff auf Elemente mit „operator[] birgt jedoch das inhärente Risiko eines undefinierten Verhaltens, wenn der Index außerhalb der Grenzen liegt.
Grenzüberprüfung im Debug-Modus aktivieren
Um Grenzen zu aktivieren Bei der Suche nach „operator[]“ in Visual Studio kann das Makro _SECURE_SCL auf einen Wert ungleich Null definiert werden. Dadurch wird die Bereichsprüfung während der Laufzeit erzwungen, was zu einer std::out_of_range-Ausnahme führt, wenn auf einen ungültigen Index zugegriffen wird.
Grenzprüfung im Release-Modus deaktivieren
Um die Leistung zu optimieren In Release-Builds kann die Grenzprüfung deaktiviert werden, indem _SECURE_SCL auf 0 gesetzt wird. Dadurch entfällt der mit der Bereichsüberprüfung verbundene Laufzeitaufwand.
Beispiel:
<code class="cpp">// Enable bounds checking in debug mode (assuming Visual Studio 2008 or earlier) #ifdef _DEBUG #define _SECURE_SCL 1 #endif // ... std::vector<std::vector<int>> v; v[0][1]; // Throws `std::out_of_range` if i or j is out of bounds</code>
Hinweis:
Das obige ist der detaillierte Inhalt vonWie kann ich die Grenzüberprüfung für „std::vector' in C aktivieren und deaktivieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!