Связанная проверка стоит дорого ( > x2 раза превышение времени выполнения)
Я получил этот пункт выше от одного из моих профессоров. Я смущен этим. Как я знаю, наиболее трудоемкой частью программы является IO (из сети и с жестких дисков).
Но проверка границ на C или С++ не всегда связана с этими 2 источниками.
Например, я копирую содержимое одного баффа другому в C с помощью memcpy(dest, src, length(src))
. До этого я проверяю размер src
, чтобы предотвратить переполнение кучи. Прецессией, которую я могу сделать, является: Получить начальный адрес src
и байт \x00
в src
(в представлении языка ассемблера я копирую содержимое src
один за другим и вижу, если байт эквивалентно с \x00
). Получив 2-й адрес, просто вычтите их, чтобы получить длину src
. Я прочитал содержимое src
из памяти. Мы все знаем, что чтение вещей из памяти происходит быстро.