【发布时间】:2023-03-12 14:15:02
【问题描述】:
您好,我在 AIX 6 上用 C++ 编写了一段代码,作为我项目的一部分,如下所示: 它可以正确编译和构建。但是在执行以下行时出现分段错误, "EquipmentSMU _equipmentSMU=_smuArray[i];"
我正在使用 bjam 构建它,并使用 -bmaxdata:0x80000000 选项链接所有库。 我在执行之前尝试了 export $LDR_CNTRL=MAXDATA=0x80000000 但无法解决问题。
我在 Windows 中运行了相同的代码,它运行良好,没有任何问题。
我的代码:
#define EQUIP_MAX_SMU_LEN 30
#define EQUIP_MAX_SMU 100
typedef struct
{
wchar_t _smu[EQUIP_MAX_SMU_LEN+1];
} EquipmentSMU;
class Equipment
{
public:
Equipment();
~Equipment();
private:
void _AddSMU(wchar_t* smu);
private:
EquipmentSMU _smuArray[EQUIP_MAX_SMU];
};
void Equipment::_AddSMU(wchar_t* smu)
{
int i;
for ( i=0; i < EQUIP_MAX_SMU; i++ )
{
EquipmentSMU _equipmentSMU=_smuArray[i];//segmentation fault coming at here
wchar_t _tempSmu = _equipmentSMU._smu[0];
if(_tempSmu == L'\0' )
{
wcsncpy( _smuArray[i]._smu, smu, EQUIP_MAX_SMU_LEN+1 );
return;
}
if( wcsncmp( _smuArray[i]._smu, smu, EQUIP_MAX_SMU_LEN+1) == 0 )
{
return;
}
}
}
谁能帮我解决这个问题。 谢谢,
【问题讨论】:
-
段错误中的
i是什么? -
它是0。它发生在迭代的最开始。
-
我怀疑您的
Equipment实例已损坏。您是如何创建和使用它的? -
我怀疑您将
Equipment实例分配为局部变量(可能是数组?),这会导致堆栈溢出。请包含代码的相关部分。 -
抛出异常的那一行的
this指针的值是多少?
标签: c++ segmentation-fault aix bjam