调试器严重检测到C++分段错误

ghi*_*ghi 1 c++ gdb g++ segmentation-fault

下面是我的c ++程序的开头.对我来说这看起来很正常,但是当我运行它时,我会出现分段错误.这是调试器给我的:

Program received signal SIGSEGV, Segmentation fault.
0x00000000004008d4 in main () at usu.cpp:12
12      cin >> n >> k;
Run Code Online (Sandbox Code Playgroud)

但是当我在循环程序正常结束之前放入"reutrn 1"时,errer与这行代码没有联系.可能有什么不对?我使用:g ++ -ggdb3编译我的程序

#include <iostream>
#include <stdio.h>
#define MAX_N 1000000
#define MAX_K 1000000
#define MAX_IL_KROKOW 500000

using namespace std;

int main()
{
    int n, k;   
    cin >> n >> k;

    char klocki[MAX_N+1];
    int Przes_C[MAX_IL_KROKOW];//podaje nast?pne c po c znajduj?cym si? na pozycji i
    int Ktore_b[MAX_N];//na podstawie indeksu b w klockach zwraca indeks w tablicy Przes_b
    int Przes_b[MAX_N];//zwraca indeks b w klockach na podstawie wyst?powania b 
    int poprz_c = -1;
    int ilosc_b = 0;
    int klocki_len = 0;
    for(int i=0;i<n;i++) 
    {   
        klocki[i] = getchar();
        return 1;
        if(klocki[i] == 'b')
        {   
            Przes_b[ilosc_b] = i;
            Ktore_b[i] = ilosc_b;
            ilosc_b++;
        }       
        if(poprz_c != -1 && klocki[i] == 'c')
            Przes_C[poprz_c] = i;
        if(klocki[i] == 'c')
            poprz_c = i; 

        klocki_len++;
    }       
    klocki[klocki_len] = '\0';
Run Code Online (Sandbox Code Playgroud)

P.P*_*.P. 5

当您尝试向数组写入内容时,可能是您的数组分配失败导致未定义的行为.

char klocki[MAX_N+1];
int Przes_C[MAX_IL_KROKOW];
int Ktore_b[MAX_N];
int Przes_b[MAX_N];
Run Code Online (Sandbox Code Playgroud)

这些是大规模阵列.每个进程只分配固定大小的堆栈.使用创建的动态数组new.

  • std :: vector <int>会更好. (4认同)