Hi Cap'n Proto Team, Thanks for the amazing tool you have created so far.
Understand that with the current design of arena style memory allocation, we cannot simply reuse the message, and re-init List() object to send it again. This will cause the message to grow every time we send (memory leak). However, sending variable length data is still pretty common practice. If we have to reallocate a brand new heap for new message, it is quite wasteful. In most cases however, the variable length list is just one. So I have an idea. ``` struct Detection2d { labelIdx @0 :UInt32; labelString @1 :Text; xmin @2 :Float32; xmax @3 :Float32; ymin @4 :Float32; ymax @5 :Float32; confidence @6 :Float32; } struct Detections2d { header @0 :import "header.capnp".Header; imageData @1 :Data; # should be RGB width @2 :UInt32; height @3 :UInt32; detections @4 :List(Detection2d); } ``` In this case, I have put the variable length object at the vary last. That means everything in front is fix length. Is there a way i could force the Capnproto to discard the memory of the old List and create a new one directly from its old memory location, with out leaking a chunk of memory in the arena? If it is not currently possible, do you think it is a convenient function to be added? Thanks! -- You received this message because you are subscribed to the Google Groups "Cap'n Proto" group. To unsubscribe from this group and stop receiving emails from it, send an email to capnproto+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/capnproto/c500ece7-1871-4015-ba78-f456365a8bc3n%40googlegroups.com.