Я обычно широко использовал структурные массивы для массивов в C ++ для окон, с памятью, назначенной через new и delete в конструкторе и деструкторе соответственно.
Это мое первое приложение для Android.
Приложение вылетает, с тех пор как я сменил свой первый массив с простого
определяется как float AccelZ [1000] в заголовочном файле
используется как AccelZ [i]
в массив структур, определенный в заголовочном файле и с новыми и удаляемыми в событиях FormCreate и FormDestroy.
и используется как AccelArray [i] -> Z
Не используются ли структурные массивы в Android? Но если бы это было так, то я бы ожидал ошибку компиляции.
Спасибо
Отредактировано сейчас с примером:
В заголовочном файле:
const int MAXTIMESTEPS = 20000;
struct AccelerationRecord
{
float Z;
};
Под общедоступным:
AccelerationRecord* Acceleration[MAXTIMESTEPS];
В файле .cpp под FormCreate. В Windows я бы поместил это в Конструкторе, но это не сработало здесь для приложения для Android (я новичок в приложениях для Android)
void __fastcall TTabbedwithNavigationForm::FormCreate(TObject *Sender)
{
for (int i; i < MAXTIMESTEPS; i++)
Acceleration[i] = new AccelerationRecord;
>>snip other code
}
Под FormDestroy (используется, чтобы поместить это в деструктор в Windows App)
void __fastcall TTabbedwithNavigationForm::FormDestroy(TObject *Sender)
{
for (int i; i < MAXTIMESTEPS; i++)
delete Acceleration[i];
}
позже в приложении, при первом использовании как
if (MotionSensor1->Sensor-
>AvailableProperties.Contains(TCustomMotionSensor::TProperty::AccelerationZ))
{
lbAccelerationZ->Text = lbAccelerationZ->Text.sprintf(L"Acceleration Z: %6.2f",MotionSensor1->Sensor->AccelerationZ+1);
Counter += 1;
Acceleration[Counter]->Z = MotionSensor1->Sensor->AccelerationZ+1;
//crashes at this line in debug mode
>> snip other code
}