mardi 21 juillet 2015

The std::get_temporary_buffer returns raw pointer instead of smart one

The std::get_temporary_buffer returns a std::pair holding a pointer to the beginning of the allocated storage and the number of objects allocated, and the only purpose of its counterpart: std::return_temporary_buffer is to deallocate memory previously allocated with std::get_temporary_buffer.

Both functions lies on the <memory> header which main purpose is to provide tools to enhance memory management (as it name implies) and make memory management more secure.

About the security of the memory management, the <memory> header provides also the smart pointers utility which allows to manage the memory in a RAII-like manner and hence making the memory management exception safe.

C++14 also added the std::make_unique helper function, so we can avoid using raw pointers in many cases nowadays.

With all this efforts in reducing the use of raw pointers, realizing that std::get_temporary_buffer returns a raw pointer instead of a smart pointer is pretty confusing. Thats why I want to ask:

  • Is there any reason for std::get_temporary_buffer to return a raw pointer instead of returning a smart one?
  • If there's a reason for this "old fashioned" way to allocate and deallocate memory manually, which goal it have that cannot be achieved with smart pointers?

Aucun commentaire:

Enregistrer un commentaire