Последствия реинициализация массива с изменением длинны.
Добавлено: 26 янв 2019, 15:16
List не самый производительный массив. (Причину необходимости оптимизировать не обсуждаем.)
По этому принял решение хранить некоторые данные в List, но инициализировать с помощью него обычный массив с фиксированной длинной для повышения производительности.
В определённый момент, иногда реже иногда чаще, в List изменяются, добавляются или удаляются какие то данные. После этого нужно обновить обычный массив.
Я произвожу повторную инициализацию фиксированного массива с новой длинной так:
//Объявления
List<Rigidbody> rbList = new List<Rigidbody> ();
Rigidbody [ ] rbArray;
int rbMax;
//Метод инициализации и повторной инициализации
public void RbArrayReBuf (){
rbMax = rbList.Count; //Максимум rb
rbArray = new Rigidbody [ rbMax ]; //Создаём массив
rbList.CopyTo ( rbArray ); //Копируем в массив
}
Я не знаю, что творится при инициализации массива с новой длинной, потому вопрос такой, что может плохого происходить от периодической переинициализации массива с новой длинной? Не будет утечки памяти или ещё чего? И просто интересно как устраивается новая длинна массива в памяти и как переопределяется ссылка на него, если начальный адрес массива изменился из-за изменения длинны которая не позволяет массиву существовать в той области памяти в которой он был, если это конечно так происходит, сразу говорю, нич*рта в этом не смыслю, работал много с микроконтроллерами, а там всё проще и прозрачнее.
Основной смыл вопроса в том, не будет ли утечки или ещё какой проблемы от этого способа?
Спасибо.
По этому принял решение хранить некоторые данные в List, но инициализировать с помощью него обычный массив с фиксированной длинной для повышения производительности.
В определённый момент, иногда реже иногда чаще, в List изменяются, добавляются или удаляются какие то данные. После этого нужно обновить обычный массив.
Я произвожу повторную инициализацию фиксированного массива с новой длинной так:
Синтаксис:
Используется csharp
//Объявления
List<Rigidbody> rbList = new List<Rigidbody> ();
Rigidbody [ ] rbArray;
int rbMax;
//Метод инициализации и повторной инициализации
public void RbArrayReBuf (){
rbMax = rbList.Count; //Максимум rb
rbArray = new Rigidbody [ rbMax ]; //Создаём массив
rbList.CopyTo ( rbArray ); //Копируем в массив
}
Я не знаю, что творится при инициализации массива с новой длинной, потому вопрос такой, что может плохого происходить от периодической переинициализации массива с новой длинной? Не будет утечки памяти или ещё чего? И просто интересно как устраивается новая длинна массива в памяти и как переопределяется ссылка на него, если начальный адрес массива изменился из-за изменения длинны которая не позволяет массиву существовать в той области памяти в которой он был, если это конечно так происходит, сразу говорю, нич*рта в этом не смыслю, работал много с микроконтроллерами, а там всё проще и прозрачнее.
Основной смыл вопроса в том, не будет ли утечки или ещё какой проблемы от этого способа?
Спасибо.