vector::operator[], runtime check?
От: igna Россия  
Дата: 27.10.09 04:56
Оценка: 9 (1)
VC++ 9.0 в Release вставляет проверку при обращении к элементу вектора:

#include <vector>
using namespace std;

int main()
{
    vector<int> v;
    v.reserve(1);
    v[0];
}


; 8    :     v[0];

    mov    edx, DWORD PTR _v$[esp+68]
    mov    eax, DWORD PTR _v$[esp+64]
    sub    edx, eax
    sar    edx, 2
    test    edx, edx
    ja    SHORT $LN64@main
    call    DWORD PTR __imp___invalid_parameter_noinfo
    mov    eax, DWORD PTR _v$[esp+64]
$LN64@main:


С одной стороны не нашел как эту проверку отключить, с другой — стандарт ее не требует. С третьей стороны непонятно как такое поведение компилятора согласуется с философией языка не платить за то, что не используется.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.