Я запускаю однопоточную систему в FreeRTOS с ограниченными ресурсами.
Я уже заранее выделяю буферы для распределителей RapidJSON следующим образом:
char valueBuffer[2048];
char parseBuffer[1024];
rapidjson::MemoryPoolAllocator<FreeRTOSRapidJSONAllocator> valueAllocator (valueBuffer, sizeof(valueBuffer))
rapidjson::MemoryPoolAllocator<FreeRTOSRapidJSONAllocator> parseAllocator (parseBuffer, sizeof(parseBuffer));
У меня проблема в том, что каждый раз, когда используется один из распределителей, его размер продолжает увеличиваться (и при необходимости выделять новую память), если они не очищаются. Проблема с вызовом Clear()
для распределителей заключается в том, что Malloc
вызывается снова при следующем изменении размера распределителей, чего я хочу избежать.
Есть ли способ просто повторно использовать существующую предварительно выделенную память, например, установив размер распределителей обратно на ноль?