


Си++ переполнение буфера. Программа не работает.
Увы, я не могу здесь привести исходный код (к тому же он огромен), но:
Программа выдает предупреждение "переполнение буфера". Она запускается, но не записывает данные в те массивы, где происходит "переполнение".
Что это такое вообще простыми словами? Программа пытается записать (а возможно и пишет) данные за пределы конца буфера, то есть - куда не следует.
Почему?
Если мне надо записать значение в энный элемент массива - почему он туда не записывается? Почему он оттуда не читается? За границы массива я не выхожу (а если бы вышел - программа бы даже не скомпилировалась), что я делаю не так?
А ещё лучше - как проблему исправить?
if (t < 3000) {
инфо[n][t][20739] = 2; // проблема находится здесь.
инфо[n][t][20740] = 0;
}
За границы массива я не выхожу (а если бы вышел - программа бы даже не скомпилировалась)
Скомпилируется
Означает, что пытаешься записать в ячейку массива, память для которой не выделена.
int* n = new int[10];
n[11] = 20; // переполнение буфера
Откуда у тебя значения 20739 и 20740, у тебя массив на столько элементов? Меня смущают такие константы. Почему тебе надо именно в эти ячейки? Покажи мне код, где ты выделяшь память.
Ты создаешь очень большой массив на стеке - стека не хватает.
Создавай его в куче, через new