Я получаю странное повреждение памяти при запуске моего кода. Это происходит из «cin» в следующем блоке. Забавно, что for-loop работает в первый раз. Моорное повреждение происходит на второй итерации (когда i = 1).Повреждение памяти при использовании cin >>
case 3:
{
// for(int i = 0; i < MAX_PLAYERS; i++)
for(int i = 0; i < 5; i++)
{
mavlink_param_value_t packet_vel, packet_pwr;
float vel_factor;
float power_factor;
strcpy(packet_vel.param_id, "GAME_VEL_FACTOR");
strcpy(packet_pwr.param_id, "GAME_PWR_FACTOR");
printf("Current index %d\n", i);
// cout << "\n" << "Enter Game Velocity Factor:";
// cin >> packet_vel.param_value;
cout << "\n" << "Enter Game Power Factor:";
cin >> power_factor;
printf("Assigning local variable to struct member\n");
packet_pwr.param_value = power_factor;
printf("Packing current message\n");
mavlink_msg_param_value_pack((uint8_t)i,
1,
&messages[i],
packet_vel.param_id,
packet_vel.param_value,
packet_vel.param_type,
1,
1);
}
*cont_mode = true;
break;
Следующая ошибка:
Enter message for player 0
Current index 0
Enter Game Power Factor:1
Assigning local variable to struct member
Packing current message
Current index 1
Enter Game Power Factor:2
*** Error in `./send_mavlink_msgs': malloc(): memory corruption (fast): 0x0000000000ccf050 ***
Aborted (core dumped)
Спасибо!
Update:
Вот как я создаю "сообщения"
mavlink_message_t *messages = (mavlink_message_t *)malloc(num_of_robots*sizeof(mavlink_global_position_int_t));
Это определение найдено here
«Повреждение памяти» почти всегда следует читать как «Я пытался сделать то, что вы мне сказали, но память уже была повреждена, и я не мог этого сделать». Это означает, что 'cin >>' не является ошибкой, что-то, что произошло _before_, то есть ошибка. Поскольку коррупция была обнаружена 'malloc', 99% времени, что означает, что вы случайно записались за конец динамически распределенного массива. –
Вам нужно положить 'endl' вместо' \ n' в те 'cout', иначе буферизация вывода не даст вам неправильного представления о том, где происходит ошибка. –
Что такое 'messages'? Пожалуйста, покажите, как вы инициализируете эту переменную. –