У меня есть ~ 15'000 строк C/C++-программа и где-то в ней - простой массив используется вне границ (его догадка), причина «неопределенного поведения» «Случается (ну, нет, мой cdrom не открывается случайным образом), но память кучи изменяется где-то в коде! некоторая определенная целая память просто переходит в нецелесообразные случайные исключения памяти, где она не должна произойти, и если я удаляю или изменяю что-либо, исключения происходят в другом месте, странном и прерывистом ... Итак, мне нужно заменить 100 массивов на что угодно, что бы проверить границы должным образом. И что-то потребует минимальных изменений.Ближайшее возможное решение для замены массивов на что-то, что могло бы проверить границы C++
Могу ли я создать класс, который имитирует поведение массивов, но проверяет границы, чтобы я мог легко менять все массивы? или какое решение в этом случае вы бы предложили? Я новичок в C++, любые примеры для меня - золото.
Я использую Windows 7, говоря простой массив я имею в виду:
int data[400];
data[20] = 4; // its fine
data[-13] = 9; // opens cdrom, or formats hard drive, or works till your windows gets updated
Можете ли вы потушить часть своего кода, чтобы мы могли видеть? – bobtheboy
['std :: array'] (http://en.cppreference.com/w/cpp/container/array) –
Это может быть довольно сложно отладить. Я предлагаю использовать valgrind или эквивалентный инструмент, который может дать вам больше информации о недопустимом доступе к памяти. – SirDarius