Почему не получается задача на степике? Как исправить ошибку
https://stepik.org/lesson/13025/step/16?unit=4377 вот ссылка на задачу
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
int N = 0, K = 0, b = 0, c = 0;
cin >> N >> K;
string a[N];
for (int i = 1; i <= N; i++)
{
a[i] = "I";
}
cin >> b;
cin >> c;
for (int j = 1; j <= K; j++)
{
for (int p = b; p <= c; p++)
{
a[p - 1] = ".";
}
cin >> b;
cin >> c;
}
for (auto now : a)
{
cout << now;
}
return 0;
}
Ошибка: *** Error in `./main': free(): invalid pointer: 0x00007ffdef97e480 *** ======= Backtrace: ========= [0x4ada47] [0x4b32d2] [0x4b3aee] [0x418e90] [0x419b3b] [0x4006fe] [0x496a03] [0x496dc2] [0x4011aa] ======= Memory map: ======== 00400000-00583000 r-xp 00000000 fe:01 3430388 /sandbox/main 00782000-0078b000 rw-p 00182000 fe:01 3430388 /sandbox/main 0078b000-00790000 rw-p 00000000 00:00 0 01140000-01163000 rw-p 00000000 00:00 0 [heap] 7f6e4c000000-7f6e4c029000 rw-p 00000000 00:00 0 7f6e4c029000-7f6e50000000 ---p 00000000 00:00 0 7f6e511a3000-7f6e511a4000 rw-p 00000000 00:00 0 7ffdef95e000-7ffdef97f000 rw-p 00000000 00:00 0 [stack] 7ffdef98d000-7ffdef990000 r--p 00000000 00:00 0 [vvar] 7ffdef990000-7ffdef992000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] Aborted (core dumped)
Ответы (1 шт):
string a[N];
for (int i = 1; i <= N; i++)
{
a[i] = "I";
}
Если вспомнить, что элементы массива нумеруются с нулевого, то последнее присваивание в цикле — a[N] = "I"; — пишет в память за рамками выделенного массива, что приводит к неопределенному поведению...
В цикле ниже — та же ошибка.