Ошибка сегментации C ++ в AIX

Привет, я написал кусок кода на C ++ в AIX 6 как часть моего проекта, как показано ниже:
Он компилируется и собирается правильно. Но получая ошибку сегментации при выполнении ниже строк,
«EquipmentSMU _equipmentSMU = _smuArray [i];»

Я собираю его с помощью bjam и связываю все библиотеки с опцией -bmaxdata: 0x80000000.
Я пробовал его с экспортом $ 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;
}
}
}

Может кто-нибудь, пожалуйста, помогите мне решить эту проблему.
Спасибо,

-1

Решение

Вы кладете его в стек вместо кучи, и AIX не является поклонником этого.

Объявите указатель * _smuArray и используйте его в своем конструкторе как _smuArray = new type [i], который должен покрывать все это в куче. Не забудьте поместить delete [] _smuArray и _smuArray = NULL в ваш деструктор. Я провел 3 часа прошлой ночью, выясняя это 🙂

Вы, вероятно, обнаружите, что ваш код работает нормально, если вы поместите его в main (). Это одна из тех глупых вещей AIX.

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector