У меня есть требование, которое нужно многократно выделять и освобождать память. В настоящее время пробую это на Integrity ARM simulator.
Я создал две задачи:
Первая задача (кодировщик): получает видеоданные из сокета, кодирует их и отправляет во вторую задачу.
Второе задание (декодер): получает данные от кодера и декодирует их. В этом процессе декодирования он динамически распределяет память, а после декодирования освобождает память.
Через некоторое время задача декодера приостановлена и не может прочитать защищенную память. Как я могу решить эту проблему динамической памяти? Я не хочу использовать массивы фиксированного размера.
Спасибо
Я вижу, что это старый пост, и вы, вероятно, уже нашли исправление, но я видел подобное поведение в Integrity, когда памяти, зарезервированной для виртуального адресного пространства в файле int, недостаточно. Попробуйте увеличить MemoryPoolSize и / или HeapSize в вашем int-файле VAS. Также проверьте еще раз, что тот же объем памяти, который вы выделяете, позже будет правильно освобожден. Я знаю, что ошибка, которую вы видите, не связана с нехваткой памяти, но я видел, что целостность ведет себя очень странно, когда память для VAS исчерпана. Вы можете проверить использование памяти, чтобы увидеть, приближаетесь ли вы к пределу, используя сеанс отладки INDRT2 и команду ‘lt’, которая сообщит размер пула памяти «Используется / Размер» для VAS.
Удачи!