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.

Reply via email to