Необработанное исключение в С++
писала код по видео уроку и вышло это: Необработанное исключение по адресу 0x00007FF64EEC257B в 15 practice metodichka.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00000000FDFDFDFD.
#include <iostream>
using namespace std;
void main()
{
setlocale(LC_ALL, "RUS");
//двумерный динамический массив
int rows = 4;
int cols = 5;
int** arr = new int* [rows];//** значит, что переменная arr будет хранить указатель на указатель
for (int i = 0; i < rows; i++)
{
arr[i] = new int[cols];
}
for (int i = 0; i < rows; i++) //заполнение массива
{
for (int j = 0; i < cols; i++)
{
arr[i][j] = rand() % 10;
;
}
}
for (int i = 0; i < rows; i++) //е массива
{
for (int j = 0; i < cols; i++)
{
cout << arr[i][j] << '\t';
}
cout << endl;
}
for (int i = 0; i < rows; i++) //цикл для удаления того, что находится внутри массива. если удалить сам массив, то то, что есть в нем, останетс и произойдет утечка памяти
{
delete [] arr[i];
}
delete[] arr;
}
Во вложенных циклах у тебя в обоих стоит i++. Во втором цикле нужно написать j++
#include <cstdlib>
#include <ctime>
#include <iostream>
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
using namespace std;
int main() {
srand(static_cast<unsigned>(time(nullptr)));
size_t rows = 4;
size_t cols = 5;
auto arr = new(nothrow) int* [rows];
if (arr != nullptr) {
for (size_t i = 0; i < rows; ++i) {
arr[i] = new(nothrow) int[cols];
if (arr[i] == nullptr) {
for (size_t j = 0; j < i; ++j) {
delete[] arr[j];
}
delete[] arr;
arr = nullptr;
break;
}
}
}
if (arr != nullptr) {
for (size_t i = 0; i < rows; ++i) {
for (size_t j = 0; j < cols; ++j) {
arr[i][j] = RAND(0, 10);
}
}
for (size_t i = 0; i < rows; ++i) {
for (size_t j = 0; j < cols; ++j) {
cout << arr[i][j] << '\t';
}
cout.put('\n');
}
for (size_t i = 0; i < rows; ++i) {
delete[] arr[i];
}
delete[] arr;
} else {
system("chcp 1251 > nul");
puts("Недостаточно памяти!");
}
cin.get();
}
во всех твоих циклах для "j" стоит переменная "i" - исправь и крашить не будет. ты просто выходишь за границы массива
я вас люблю