1.栈空间和堆空间
- 栈区(stack):又编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的;
- .堆区(heap):一般是由程序员分配释放,若程序员不释放的话,程序结束时可能由OS回收;
- 栈:由系统自动分配,系统收回; 堆:需要程序员自己申请,C++中用new分配空间,用free释放;
2.delete指针的危害
- 产生野指针;
- 删除之后,指针指向的内容为空,但指针仍指向原来的位置,那么在下次有内容存入这个位置时,就会失控;
- 因此,指针释放之后最好置为NULL;
int a = 10;
int *b = &a;
cout << *b<<endl;
cout << b<<endl;
cout << &b << endl;
运行结果为: