什么是C ++中的自由函数?

C / C ++库函数void free(void * ptr)取消分配先前由对calloc,malloc或realloc的调用分配的内存。以下是free()函数的声明。

void free(void *ptr)

该函数需要一个指针ptr。这是指向以前分配有malloc,calloc或realloc的内存块的指针。如果将空指针作为参数传递,则不会发生任何操作。

示例

#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int main () {
   char *str;
   /* Initial memory allocation */
   str = (char *) malloc(15);
   strcpy(str, "nhooo");
   cout << "String = "<< str <<", Address = "<< &str << endl;
   /* Reallocating memory */
   str = (char *) realloc(str, 25);
   strcat(str, ".com");
   cout << "String = "<< str <<", Address = "<< &str << endl;
   /* Deallocate allocated memory */
   free(str);
   return(0);
}

输出结果

String = nhooo, Address = 0x22fe38
String = nhooo.com, Address = 0x22fe38