namespace std {
void free(void* ptr) noexcept;
}
概要
malloc、calloc、aligned_alloc、reallocで確保されたメモリ領域を解放する。
解放済みのポインタを再度 free に渡したり、アクセスしたりするときの動作は未定義となる。
ポインタがnullptrの場合、この関数は何も実行しない。
解放されたポインタに再びアクセスする場合、未定義動作を引き起こす恐れがある。
備考
この関数はスレッドセーフである。
実装例
#include <cstdlib>
int main()
{
int *p1 = std::malloc(10 * sizeof *p1);
std::free(p1); // p1のメモリを解放
int *p2 = std::calloc(10, sizeof *p2);
int *p3 = std::realloc(p2, 1000 * sizeof *p3);
if (p3)
std::free(p3); // realloc により新しい領域が確保された場合、それを解放
else
std::free(p2); // realloc が失敗した場合は元の領域を解放
}
出力
関連項目
aligned_alloc:指定したアライメントでメモリを確保するmalloc:メモリを確保するcalloc:メモリを確保する(0で初期化する)realloc:メモリを再確保する