C++ free()函数
时间:2020-02-23 14:29:57 来源:igfitidea点击:
在本文中,我们将重点关注C++ free()函数。
什么是C++ free()函数?
C++包含各种函数和运算符来处理内存管理,例如new运算符,malloc等。
C++ free()函数使程序员可以释放以前由某些实体占用的内存空间。
也就是说,free()函数取消分配分配给实体的存储块以进行存储。
因此,使用free()函数,我们可以使存储空间易于进一步处理。
此外,它使我们能够在动态运行时清空内存存储块。
现在,让我们在接下来的部分中关注free()函数的结构。
free()函数的语法
看看下面的语法!
void free(void *ptr)
free()函数接受一个指针变量作为参数。
该指针变量是指向分配给指向实体的内存存储的指针。
因此,free()函数不会更改/更改指针变量的值,即,指针将指向已取消分配的同一内存位置,并且释放了内存!
指针变量仅应指向已使用malloc,realloc或者calloc函数分配的内存块,否则将导致未定义的行为。
如果指针变量为NULL,则free()对其不执行任何操作。
示例– C++ free()函数
在下面的示例中,我们使用了C++ calloc()函数将内存存储动态分配给给定的指针变量。
#include <iostream> #include <cstdlib> #include <cstring> using namespace std; int main() { int *p; p = (int*) calloc(1,10); *p = 25; cout << "Value stored at pointer variable p before applying free() function: "<< *p<<endl; free(p); cout << "Value stored at pointer variable p after applying free() function: " << *p << endl; return 0; }
输出:
Value stored at pointer variable p before applying free() function: 25 Value stored at pointer variable p after applying free() function: 0
其中我们使用了malloc()函数在运行时分配内存空间。
此外,free()函数不会更改指向内存块的指针的地址值,如下所示:
#include <iostream> #include <cstdlib> #include <cstring> using namespace std; int main() { int *p; p =(int*) malloc(sizeof(int)); *p = 25; cout<<"Address before applying free() function: "<<p<<endl; cout << "Value stored at pointer variable p before applying free() function: "<< *p<<endl; free(p); cout << "Value stored at pointer variable p after applying free() function: " << *p << endl; cout<<"Address after applying free() function: "<<p<<endl; return 0; }
输出:
Address before applying free() function: 0xf89c20 Value stored at pointer variable p before applying free() function: 25 Value stored at pointer variable p after applying free() function: 0 Address after applying free() function: 0xf89c20