Ошибки, баги, вопросы - страница 1648
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А разве текущий 0 не так работает?
Ну по идее это означает нулевой резерв. А лишняя память наверно утилизируется. Вообще там много неясностей с этим, мы не можем узнать реальный размер выделенной памяти под массив, чтоб проверить это и оптимизировать работу.
Если я правильно помню объяснения, резервный размер не уменьшится даже если ему явно указать меньшее число.
Неправильно. Судя про примеру из справки, 0 работает действительно как 0 и тогда предложение про -1 очень даже логично.
А предложение про ArrayResize я переформулирую так: нужно чтобы при задании reserve_size=-1 функция не меняла выделенный размер памяти под массив, если параметр size лежит в пределах этого диапазона. Если же size > capacity, то само собой буфер увеличится.
Логика работы с резервом(условный код):
В массиве ("внутри") хранится allocated - под сколько элементов массив распределён.
Логика работы с резервом(условный код):
Ясно, спасибо. А в самом начале этот allocated равен -1, или нет? Т.е. при первоначальном вызове ArrayResize(arr, 0, 100) аллокация будет?
А в самом начале этот allocated равен -1, или нет?
Т.е. при первоначальном вызове ArrayResize(arr, 0, 100) аллокация будет?
Аллокация происходит, только если размер массива меняется в большую сторону. В данном случае, размер массива не меняется, т.к. он был равен 0
Разница в том, что в первом случае ошибки нет :)