Estoy convirtiendo un extremadamente programa grande y muy viejo (25 años!) De C a C++.¡Accediendo a una matriz con un número negativo!
En ella hay muchos (muchísimos) lugares donde accedo a una matriz UBYTE unidimensional global usando una variedad de índices enteros. Ocasionalmente, este índice puede ser negativo.
A veces, pero no siempre, atrapé esta caja y me aseguré de que no pasara nada, pero como medida de correas y tirantes me tomé la molestia de asegurarme de que había otro trozo de memoria inmediatamente anterior a la matriz y llenaba con los valores correctos, de modo que si accidentalmente omití atrapar la condición numérica negativa, se obtendría una respuesta correcta en el acceso a la matriz. Esto realmente funcionó bien durante muchos años.
Pero ahora bajo C++ parece que acceder a una matriz con un número negativo se comporta de manera diferente y ahora tengo un programa que se comporta mal. Arreglé un caso de un número negativo no controlado y el programa parece estar funcionando bien, pero estoy nervioso de no haber atrapado todos los números negativos y puede haber problemas por delante.
Así que mi pregunta ahora es, ¿hay alguna forma, en tiempo de ejecución, para que detecte cualquier instancia de acceso a matrices con índices negativos? Estaré impresionado si alguien puede encontrar una respuesta. Si está seguro de que no se puede hacer de manera automática, entonces es una información valiosa.
Debo agregar que no soy realmente un programador de C++ (todavía). Hasta ahora, todo lo que he hecho es el mínimo absoluto (casi nada) para hacer que el programa se compile en un compilador de C++. Entonces, si su respuesta involucra a expertos "expertos solamente, soluciones de C++", intente y explique con palabras de una sílaba o déme un enlace para que pueda buscarlo.
¡No pensé que pudiera acceder a una matriz con valor negativo! –
Si funciona, no lo toques. –
Si funciona, mejora. –