函数 free 的原型如下:
void free( void * memblock ); 为什么 free 函数不象 malloc 函数那样复杂呢?
这是因为指针 p 的类型以及它所指 的内存的容量事先都是知道的,语句 free(p)能正确地释放内存。
如果 p 是 NULL 指针, 那么 free 对 p 无论操作多少次都不会出问题。
如果 p 不是 NULL 指针,那么 free 对 p 连续操作两次就会导致程序运行错误
1 #include <iostream> 2 3 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 4 using namespace std; 5 //声明引用参数的函数模板原型 6 template <class T> void swap(T &x, T &y); 7 8 //定义一个结构类型 9 struct student { 10 int n; 11 char name[20]; 12 float grade; 13 }; 14 15 16 int main(int argc, char** argv) { 17 //交换两个int型变量中的数据 18 int m=3,n=5; 19 cout<<"m="<<m<<" n="<<n<<endl; 20 swap(m,n); 21 cout<<"m="<<m<<" n="<<n<<endl; 22 cout<<"-------------------"<<endl; 23 24 //交换两个double型变量中的数据 25 double x=3.5,y=5.7; 26 cout<<"x="<<x<<" y="<<y<<endl; 27 swap(x,y); 28 cout<<"x="<<x<<" y="<<y<<endl; 29 cout<<"-------------------"<<endl; 30 31 //交换两个char型变量中的数据 32 char c1='A',c2='a'; 33 cout<<"c1="<<c1<<" c2="<<c2<<endl; 34 swap(c1,c2); 35 cout<<"c1="<<c1<<" c2="<<c2<<endl; 36 cout<<"-------------------"<<endl; 37 38 //交换两个结构变量中的数据 39 student s1={1001,"ZhangHua",90}; 40 student s2={1011,"LiWei",95.5}; 41 cout<<"s1: "; 42 cout<<s1.n<<" "<<s1.name<<" "<<s1.grade<<endl; 43 cout<<"s2: "; 44 cout<<s2.n<<" "<<s2.name<<" "<<s2.grade<<endl; 45 swap(s1,s2); 46 cout<<"swap(s1,s2):"<<endl; 47 cout<<"s1: "; 48 cout<<s1.n<<" "<<s1.name<<" "<<s1.grade<<endl; 49 cout<<"s2: "; 50 cout<<s2.n<<" "<<s2.name<<" "<<s2.grade<<endl; 51 return 0; 52 } 53 54 //定义名为swap的函数模板用于交换两个变量中的数据 55 template <class T> void swap(T &x, T &y) 56 { 57 T temp; 58 temp=x; 59 x=y; 60 y=temp; 61 }