Vista ошибка BEX

Причина ошибки

Если у вас есть массив a, который был создан с элементами n, то при попытке получить доступ к элементу массива из облака это неопределенное поведение. Таким образом, индекс ДОЛЖЕН всегда быть между 0 и n-1.

Таким образом, поведение вашей программы не определено, как только count равно 100, так как оценка условия в if -предложении уже пытается получить доступ за пределами.

Корректировка, которая делает то, что вы хотите

Теперь, кроме того, есть серьезная ошибка в логике вашей программы: если вы хотите добавить числа, которые удовлетворяют некоторому условию, вам нужно 2 счетчика: один для итерации по числам и один для последнего индекса, используемого в массиве:

for (int nextitem=0, count = 1; count < 200; count++) {
    if (count % 2 == 1) {   // not a[count], you need to test number itself
        a[nextitem++] = count;
        cout << count << endl;
        if (nextitem == 100) {    // attention:  hard numbers should be avoided
            cout << "Array full: " << nextitem << " items reached at " << count <<endl;
            break;   // exit the for loop
        }
    }
} 

Но, это решение требует, чтобы вы отслеживали последний элемент в массиве и размер массива (это жестко запрограммировано здесь).

Векторы

Вы, вероятно, учитесь. Но в C ++ лучшим решением было бы использовать vector вместо массива и использовать push_back(). Векторы управляют памятью, так что вы можете сосредоточиться на своем алгоритме. Полная программа будет выглядеть следующим образом:

vector<int> a;
for (int count = 1; count < 200; count++) {
    if (count % 2 == 1) {
        a.push_back(count);
        cout << count << endl;
    }
}
cout << "Added " << a.size() << " elements" <<endl; 
cout << "10th element: "<< a[9] << endl; 
6
задан Community 9 September 2008 в 12:13
поделиться

5 ответов

BEX=Buffer переполняют исключения. См. http://technet.microsoft.com/en-us/library/cc738483.aspx для деталей. Однако c000000d является STATUS_INVALID_PARAMETER; technet статья говорит, прежде всего, о состоянии c0000005 или c0000409 (нарушение прав доступа / DEP)

4
ответ дан 17 December 2019 в 00:17
поделиться

Java и IE7 не нравится играть вместе приятно. Просто выключите DEP, он будет хорошо работать затем.

http://www.tech-recipes.com/rx/1261/vista_disable_dep_noexecute_protection_fix_explorer_crashing/

2
ответ дан 17 December 2019 в 00:17
поделиться

перейдите к опциям Internet Explorer/, совершенствовался,/security/снимают флажок, который, поскольку, который говорит, позволяют защите памяти смягчить нападения, это будет работать, это сделало для меня

перейдите к опциям Internet Explorer/, совершенствовался,/security/снимают флажок, который, поскольку, который говорит, позволяют защите памяти смягчить нападения, это будет работать, это сделало для меня

1
ответ дан 17 December 2019 в 00:17
поделиться

Скорее всего, есть надстройка, которая мешает IE.

Вы можете попробовать это. 1. Откройте IE. 2. Перейдите на вкладку «Дополнительно». 3. Нажмите кнопку «Сбросить настройки Internet Explorer». 4. Нажмите «Сброс», чтобы подтвердить операцию. 5. По завершении процесса сброса нажмите «Закрыть». 6. Снимите флажок «Включить сторонние расширения браузера» в поле «Настройки». 7. Щелкните «Применить», затем «ОК».

После этого проверьте, работает ли он, и, если работает, включайте по одному надстройке за раз, пока не найдете виновника. Затем удалите его и при необходимости переустановите.

0
ответ дан 17 December 2019 в 00:17
поделиться

просто попробуйте отключить панель инструментов bing или msn - это должно помочь.

0
ответ дан 17 December 2019 в 00:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: