C 分割故障由调试器糟糕检测

C++ segmentation fault badly detected by debugger

本文关键字:检测 调试器 分割 故障      更新时间:2023-10-16

以下是我的C 程序的开始。对我来说看起来很正常,但是当我运行时,我会出现细分故障。这就是调试器给我的:

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

但是,当我在循环程序正常结束之前将" reutrn 1"放置时,错误没有与此代码线连接。怎么了?我使用: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] = '';

可能是youur数组分配失败,这会导致不确定的行为,当您尝试将某些内容写入数组时。

char klocki[MAX_N+1];
int Przes_C[MAX_IL_KROKOW];
int Ktore_b[MAX_N];
int Przes_b[MAX_N];

这些是巨大的阵列。每个过程只有固定尺寸分配的堆栈。使用new

创建动态数组

您还可以将数组变量定义为主函数之外的全局变量。取决于您的程序(长度)是否有意义。