Я часто вижу код, который добавляет значение, например длину к указателю, а затем использует это значение, например.
T* end = buffer + bufferLen;//T* + size_t
if (p < end)
Однако возможно ли, чтобы буфер был выделен достаточно близко к концу памяти, который может переполнять "buffer + bufferLen" (например, 0xFFFFFFF0 + 0x10), в результате чего "p < end" является ложным, даже если p действительный адрес элемента (например, 0xFFFFFFF8).
Если это возможно, как его можно избежать, когда я вижу много вещей, которые работают с диапазоном начала/конца, где конец следующего элемента после последнего