ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
1041225 Топик полностью
fk0, легенда (30.09.2020 12:47, просмотров: 382) ответил AlexBi на Пытаюсь начать отлаживать кусочки программы для м/к на ПК, с симуляцией. Хочу добавить контроль выхода за границы буфера и ни как не придумаю как это лучше сделать. Программа для м/к на С (таков компилятор), программа на ПК на С++. Программа для ПК состоит из файлов для м/к, без изменений, плюс что-то еще. Пока получается так:
За границы буфера? Address Sanitizer (встроен прямо в Clang или GCC!), Valgrind (плохо или не работает для статически распределённой памяти). Если C++, то можно сделать смарт-указатель, у которого переопределены (только на ПК) operator* и operator[] так, что имею проверку диапазона... Разумеется внутри он должен хранить не только указатель, но и начало/конец диапазона. Рекомендую начать с Address Sanitizer. Кстати он проигрывает Valgrind'у в одном: последний умеет 

понимать, что ты оперируешь неинициализированными байтами в памяти, а Address Sanitizer не умеет. Да, Address Sanitizer не требует изменять код вообще... Он в процессе компиляции сам всё делает как надо.

[ZX]