У меня есть небольшая C программа.
#include <stdlib.h>
#include <stdio.h>
void counter(int n);
int main(int argc, char *argv[])
{
int n = atoi(argv[1]);
counter(n);
return 0;
}
void counter(int n)
{
printf("%d\n", n);
if(n == 0) {
return;
}
counter(n - 1);
}
Когда я ввожу 200000 в качестве аргумента командной строки, он работает хорошо. Но с 300000 он говорит: 17623 Ошибка сегментации (ядро сброшено).
При gdb ошибка: Программа получила сигнал SIGSEGV, Ошибка сегментации. 0x00007ffff7a6f198 в _IO_new_file_write (f = 0x7ffff7dd0760 <_IO_2_1_stdout_>, data = 0x555555756260, n = 6) в fileops. c: 1196 1196 fileops. c: такого файла или каталога нет.
1006 знать, что не так. Стоит ли выделять память или что-то в этом роде?