size_t это алиас unsigned типа, обычно это unsigned int. Обычно, вышестоящий код при вычислении буфера использует тип int и не дай бог он окажется отрицательным (вот та самая экзотика), если вы принимаете как int, то этот случай отслеживаемый. А так к вам прилетает просто большое число, конечно, маловероятное, но вполне возможное.
Поэтому я использую int, многие либы используют int, но стандартные либы С и С++ используют size_t
@AxisPod Странного, по логике оверхед у deque больше, чем у вектора. По сути вектор надстройка над непрерывном блоком памяти, а значит доступ к элементу - простая обертка над операцией с указателем. Или я не прав?
Когда я сказал "в двух словах", я держал в уме именно ошибки типизаций.
Я рассматриваю ошибки под таким углом: что нарушает заложенный ход программы и что не нарушает.
Любые ошибки типизации допускаемые синтаксисом языка, в том числе неожиданные переполнения - нарушают нормальный ход программы.
Программист, написавший код, в котором произошла ошибка, по-хорошему, должен знать особенности типизаций в его языке.
И если с этой колокольни судить, то ошибка возникла из-за того, что не все возможные сценарии поведения кода были рассмотрена - значит это ошибка логики
@AxisPod а по-подробнее? я этих проблем не имел. С подключаемыми библиотеками могут быть проблемы, если они скомпилированы для СИ++ в VS (т.е. их гадо пересобирать), с сишными не имел проблем.
@Taraflex ну что могу сказать, писал обработку изображений получаемых с телескопа. Дохрена вычислений. Разница в пределах погрешности. Тоже самое говорят и сторонние тесты.
Вот теперь все прояснилось.
Что имеем:
1)проект, собираемый с помощью Cmake.
2) Отдельно стоящая VS которая пытается подключится к сторннему процессу и начать его отладку.
Однако все примеры насколько я понимаю должны выполняться быстро и VS просто не успевает подключится к процессу.
Вам нужна среда, которая понимает Cmake. Возможно существует плагин для VS который ей позволит работать с Cmake как с родным solution.
Если такового нет, то предлагаю смотреть в сторону QtCreator, Eclipse, Code::Blocks
Брейкпоинты стоят где? Как вы пересобрали либу?есть исходники? Что значит нет толку от брейкпоинтов? Ошибка у вас изменилась, скорее всего в памяти висит код, который вы запускали как релиз, простое лечение - перезагрузка
Это C#, говорить о производительности в таких вопросах уже не приходится. Чтоб получить доступ к железу так или иначе, но у вас уже есть переключение контекста, это дорогая операция, по сравнению со всем остальным.
Поэтому я использую int, многие либы используют int, но стандартные либы С и С++ используют size_t