Необработанное исключение по адресу 0x000000013F6B212B в FinalHope.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00000000001C6000

116
12 марта 2021, 22:00

Я использую memcpy для того чтобы скопировать в bytebuffer информацию из массива. Вот простой код:

char* bytebuffer = new char[1000000];
char* b = new char[2];
char* b2 = new char[2];
char* b3 = new char[1];
b[0] = '1';
b[1] = '2';
b2[0] = '1';
b2[1] = '2';
b3[0] = '1';
int dataindex = 0;
double time1 = -1;
auto t0 = std::chrono::high_resolution_clock::now();
//int s = 0;
for (int i = 0; i < 100; i++) {
    for (int j = 0; j < 10000; j++) {
        //s++;
        int size = 2 + 2 + 1;
            int ind = 0;
            memcpy(bytebuffer + dataindex , b, 2);
            ind = ind + 2;
            memcpy(bytebuffer  + ind + dataindex, b2, 2);
            ind = ind + 2;
            memcpy(bytebuffer  + ind + dataindex,b3 , 1);
            ind = ind + 1;
            dataindex = dataindex + size;

    }
}
auto t1 = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> time_span = std::chrono::duration_cast<std::chrono::duration<double>>(t1 - t0);
time1 = time_span.count();
std::cout << time1;

Буффер может быть переполнен, из-за чего выскакивает ошибка:

"Необработанное исключение по адресу 0x000000013F4E212B в FinalHope.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00000000002D6000."

Вопрос: как можно перехватить это исключение?

Answer 1

Тут возникает не исключение, а Неопределенное Поведение, которое, в свою очередь, приводит в возникновению SEH исключения, которое средствами стандартного С++ перехватить нельзя, да и не нужно, вместо этого вам необходимо устранить в свой программе выход за пределы массива.

READ ALSO
Как можно добавить функцию класса в LuaBridge

Как можно добавить функцию класса в LuaBridge

В функции инициализации функций для луа в моем классе, я бы хотел реализовать регистрацию функции из самого класса и что бы она выполнялась...

123
как сделать свой тип в c++?

как сделать свой тип в c++?

Например я могу сделать в структуре или в классе вот так

84
Воспроизведение аудиофайла в Jquery

Воспроизведение аудиофайла в Jquery

Всем приветКак реализовать в Jquery, чтобы при каждом клике аудиофайл проигрывался всего один раз

112
Как передать table в textarea jQuery?

Как передать table в textarea jQuery?

Есть страница корзины, на странице товары и их параметры формируются в таблицу table

125