-
- Для M$ есть во-первых Dr. Memory. Но он как и Valgrind не будет работать со статически распределённой памятью. Поэтому от статического распределения лучше вообще отказаться. Если malloc якобы не нужен и опасен -- то можно распределить всю память в момент старта программы, а потом не трогать. Но во всяком случае для динамической памяти тот же Dr. Memory успешно начинает работать. - fk0(02.10.2020 10:50, ссылка)
- Надо не "границы массивов" проверять, а сразу писать код так, чтоб минимизировать вероятность ошибки. В частности, отказаться по возможности от сырых указателей, и указателей вообще. Например, позаимствовать span из C++20. Для строк -- string_view из C++17. Во всех случаях подразумевается некий класс, который оперирует последовательностью доступной через пару итераторов, но не владеет им. Владеет им кто-то другой. fk0(133 знак., 02.10.2020 09:52)
- Так в студии есть аналогичная опция. - Kabdim(30.09.2020 17:51, ссылка)
- Она нихрена не аналогичная. Она аналогична другой -- -fstack-protector. Речь же про данные размещённые статически или в куче, а не на стеке. - fk0(02.10.2020 10:47)
- Оно там по умолчанию включено, однако от выхода за границы
статического массива не защитило. Столкнувшись с этим фактом я
задумался о самодельной защите. AlexBi(143 знак., 30.09.2020 18:16)
- Если есть возможность для дектопа переделать на std::array , то можно воспользоваться вот штукой. Или самописной вроде такой. Kabdim(9 знак., 01.10.2020 13:54, ссылка, ссылка)
- std::array.at() бросает исключение при выходе за границы массива, этого достаточно, чтобы обнаружить проблему у синтетического порта на ПК. Можно использовать и в МК, только придется как-то отлавливать исключение. - evgeniy1294(30.09.2020 18:23)