You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Code Blocks下C++程序出现‘Cannot access memory at address’错误的解决求助

Code Blocks下C++程序出现‘Cannot access memory at address’错误的解决求助

大家好,我刚接触C++,最近在把一段原本运行在Arduino上的代码移植到Windows PC的Code Blocks环境中,结果遇到了棘手的段错误,已经卡了5个小时,周末必须得把这个问题解决掉,真心恳请各位大佬帮忙!

问题场景

当我把*pads传入get_padding函数时,程序直接崩溃了,崩溃的位置在函数里的pads_in[i] = xxx;这一行,调试器给出的错误信息显示是内存访问错误导致的段错误。

相关代码片段

首先是调用get_padding的部分:

int range = (g_code_length - g_B26_len)-1;

char* pads[range];

// 之前测试用的固定长度数组,当时没出问题
//char*pads[2];

//usleep(2000);
//delay(2);

char*new_pads = get_padding(*pads,g_B26_len,unit,p);

然后是get_padding函数的实现:

char* Codemanager::get_padding(char* pads_in,int b26codelen ,int uniit , char  clii )
{
    int rot1 = g_brand_id;
    int rot3 = get_index_lookup(clii,0)+1;
    int range = (10 - g_B26_len)-1;

    for(int i = 0; i < range; i ++ ){
        char xxx = caeser_cipher(uniit,rot1,get_char_lookup(i+1,0),rot3);
        pads_in[i] = xxx;  // 程序在这里崩溃,触发段错误
    }

    // 原代码中此处应该有返回语句,暂时未贴出
}

调试器给出的错误信息

At C:\C++ Programming\Algo1\Codemanager.cpp:557
Program terminated with signal SIGSEGV, Segmentation fault.
Debugger finished with status 0

我的疑惑

之前用固定长度的char*pads[2];测试时程序没出问题,但换成动态计算range的数组后就崩溃了。我猜测可能是pads或者pads_in的内存没有正确分配,但刚接触C++,对指针和内存管理还不太熟悉,实在找不到问题根源。

有没有大佬能帮我分析一下问题出在哪里?应该怎么修改才能解决这个段错误?

备注:内容来源于stack exchange,提问作者PaulF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 09:33:07