-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users- bounces@lists.boost.org] On Behalf Of Stephen Torri Sent: Tuesday, October 31, 2006 9:34 AM To: boost-users@lists.boost.org Subject: Re: [Boost-users] Safe way to allocate block of memory
On Tue, 2006-10-31 at 06:49 -0500, Nat Goodspeed wrote:
[Nat] Have you tried using a std::vector<unsigned char>? You can get a pointer to the first byte in the vector by &myVector[0]. Then std::vector takes care of all the rest for you -- including allocation, cleanup and the STL container support.
// present_pos is an std::vectorboost::uint8_t::iterator to the // where the reading will start. // // dest_addr_ptr is where to write in memory // // length is how many bytes to read. void read ( boost::uint8_t* dest_addr_ptr, boost::uint32_t const& length ) { if ( present_pos + length > data.end() ) { // ERROR }
memcpy ( dest_addr_ptr, *(*present_pos), length;
[Nat] memcpy ( dest_addr_ptr, &(*present_pos), length ); or even // trust STL implementation to optimize appropriately std::copy(present_pos, present_pos + length, dest_addr_ptr);
}