Why do we have __valarray_get_memory?

Jonathan Wakely jwakely@redhat.com
Tue Dec 5 16:18:00 GMT 2017


Does the first function here really serve any purpose?

  // We get memory by the old fashion way
  inline void*
  __valarray_get_memory(size_t __n)
  { return operator new(__n); }

  template<typename _Tp>
    inline _Tp*__restrict__
    __valarray_get_storage(size_t __n)
    {
      return static_cast<_Tp*__restrict__>
	(std::__valarray_get_memory(__n * sizeof(_Tp)));
    }

  // Return memory to the system
  inline void
  __valarray_release_memory(void* __p)
  { operator delete(__p); }

Is there any benefit to doing that, instead of just making a direct
call to operator new?

  template<typename _Tp>
    inline _Tp*
    __valarray_get_storage(size_t __n)
    { return static_cast<_Tp*>(operator new(__n * sizeof(_Tp))); }

As I said in another thread, I don't think the __restrict__ does
anything there, but maybe it should use __attribute__((malloc))
instead.



More information about the Libstdc++ mailing list