FreeBSD Manual Pages
std::malloc(3) C++ Standard Libary std::malloc(3) NAME std::malloc - std::malloc Synopsis Defined in header <cstdlib> void* malloc( std::size_t size ); Allocates size bytes of uninitialized storage. If allocation succeeds, returns a pointer to the lowest (first) byte in the allocated memory block that is suitably aligned for any scalar type (at least as strictly as std::max_align_t). If size is zero, the behavior is implementation defined (null pointer may be returned, or some non-null pointer may be returned that may not be used to access storage, but has to be passed to std::free) The following functions are required to be thread-safe: * The library versions of operator new and operator delete * User replacement versions of global operator new and operator delete * std::calloc, std::malloc, std::realloc, (since C++11) std::aligned_alloc (since C++17), std::free Calls to these functions that allocate or deallocate a particular unit of storage occur in a single total order, and each such deallocation call happens-before the next allocation (if any) in this order. Parameters size - number of bytes to allocate Return value On success, returns the pointer to the beginning of newly allocated memory. To avoid a memory leak, the returned pointer must be deallocated with std::free() or std::realloc(). On failure, returns a null pointer. Notes This function does not call constructors or initialize memory in any way. There are no ready-to-use smart pointers that could guarantee that the match- ing deallocation function is called. The preferred method of memory allocation in C++ is using RAII-ready functions std::make_unique, std::make_shared, container constructors, etc, and, in low-level library code, new-expression. For loading a large file, file mapping via OS-specific functions, e.g. mmap on POSIX or CreateFileMapping(A/W) along with MapViewOfFile on Windows, is preferable to allocating a buffer for file reading. Example // Run this code #include <iostream> #include <cstdlib> #include <string> #include <memory> int main() { constexpr std::size_t size = 4; if (auto ptr = reinterpret_cast<std::string*>( std::malloc(size * sizeof(std::string)))) { try { for (std::size_t i = 0; i < size; ++i) std::construct_at(ptr + i, 5, 'a' + i); for (std::size_t i = 0; i < size; ++i) std::cout << "ptr[" << i << "] == " << ptr[i] << '\n'; std::destroy_n(ptr, size); } catch(...) {} std::free(ptr); } } Output: p[0] == aaaaa p[1] == bbbbb p[2] == ccccc p[3] == ddddd See also operator new allocation functions operator new[] (function) get_temporary_buffer obtains uninitialized storage (deprecated in C++17) (function template) (removed in C++20) http://cppreference.com 2022.07.31 std::malloc(3)
NAME | Synopsis | Parameters | Return value | Notes | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::malloc&sektion=3&manpath=FreeBSD+Ports+15.0>
