Para las matrices primas, no creo que sí, porque -fbounds-check
no funcionó con su ejemplo y MingW g ++ 4.4.1, y porque los viejos documentos 3.x que tengo dicen
-fbounds -check
para frontales que lo soportan, generar código adicional para comprobar que índices utilizados para matrices de acceso son dentro del intervalo declarado. Esto es actualmente solo es compatible con los front-ends Java y Fortran 77, donde esta opción se establece de manera predeterminada en verdadero y falso respectivamente.
Sin embargo, con std::vector
puede utilizar at
tener un poco práctico en tiempo de ejecución de comprobación de límites (genera una excepción). Y puede usar una versión de depuración especial de la biblioteca estándar, que proporciona una comprobación práctica de los límites en tiempo de ejecución para []
. Por ejemplo, al compilar & hellip;
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> arr(2);
cout << arr[ 4 ] << endl;
}
& hellip; se obtienen diferentes, respectivamente, no la comprobación y el comportamiento de la comprobación de las versiones de lanzamiento y de depuración de la aplicación g ++ biblioteca estándar:
C:\test> g++ x.cpp & a
4083049
C:\test> g++ x.cpp -D _GLIBCXX_DEBUG -D _GLIBCXX_DEBUG_PEDANTIC & a
c:\program files\mingw\bin\../lib/gcc/mingw32/4.4.1/include/c++/debug/vector:265:
error: attempt to subscript container with out-of-bounds index 4, but
container only holds 2 elements.
Objects involved in the operation:
sequence "this" @ 0x0x22ff1c {
type = NSt7__debug6vectorIiSaIiEEE;
}
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
C:\test> _
se informa de nuevos g ++ versiones (después de 4,0) que no necesitan el símbolo _GLIBCXX_DEBUG_PEDANTIC
. Para más detalles, vea el GNU documentation.
Cheers & hth.,
'-Wall -Wextra -ansi -pedantic' no genera advertencias para este programa :( – EnabrenTane