动态分配内存空间
int *pointer = new int;
*pointer = 123;
cout << "*pointer=" << *pointer << endl;
double *value = new double;
*value = 33.22;
cout << "*value=" << *value << endl;
delete释放内存空间
1. delete只能释放使用new分配的内存空间,不能释放使用malloc以及类似的函数分配的内存空间
int *n = new int;
*n = 123;
cout << "n address before delete:" << n << endl;
delete n;
2. 普通变量系统会自动回收占用的内存空间,但使用new、malloc等动态分配的内存空间(在堆上),系统不会自动回收
3. delete以后,指针指向的内存空间的数据不会被清空,除非再次写入数据
cout << "n address after delete:" << n << endl;
cout << "n = " << *n << endl;
int xyz = 300;
n = &xyz;
cout << "n address :" << n << endl;
cout << "n = " << *n << endl;
4. 有多个指针指向了相同的内存空间,只要释放一个,其他的也会释放
5. 对于已经释放了的指针所指向的内存空间,不能再次释放
int *m = new int;
*m = 444;
int *p = m;
delete p;