From: Geoffrey B. <gb...@ki...> - 2007-07-06 13:35:43
|
When you make a call to Publish() and pass in a message with dynamic data, it makes a deep copy of the data. If your data is dynamically allocated in your driver, you must remember to clean it up at the appropriate time. You could also use a static buffer, if you want. Have a look at the alsa driver, audio/alsa.cc:1268 for an example of sending dynamic data from a driver. In this case it's allocating data each time around the loop rather than copying the data straight out of the record buffer (I probably wrote it early in the morning). If your data size is going to remain constant (it doesn't in alsa's case) then a buffer allocated when the driver receives its first subscription would be the way to go. Geoff Stefan Stiene wrote: > Hi, > I have a question concerning the new ranger interface. Its the first > interface the defines an array as a pointer. (double *ranges for > example). My question is, if the message sending mechanism in player > does a deep copy of this field. In other words, can I delete the array > after the publish call or do I have to delete the field if I receive > ranger data in my module? > > Best Stefan > -- Robotics research group, University of Auckland http://www.ece.auckland.ac.nz/~gbig005/ |