C++ new 和 delete的一些使用见解
来源:互联网 发布:涉密网络 编辑:程序博客网 时间:2024/06/05 11:02
new 和 delete的使用
int i;
int *pi = new int; //int变量没有被初始化。
int *pi = new int(); //第二个变量初始化为0.
......
delete pi;
在上面的表达式中,new在堆中开创了一片内存区域。在栈中创建一个指针变量对象pi。
pi指向了这片内存,也就是地址,使用*pi获得内存的数据。
在这里堆与栈的区别大概提一下,堆是一片不连续的内存空间,可使用空间很大,而栈是一片连续的空间,可使用范围较小。
指针其实很好理解,在这里用我的个人见解举个例子:
小明今天想去广州动物园玩,但他从来没去过这个地方。
于是小明需要叫出租车,司机当然熟悉这个地址,所以可以直接把小明带到广州动物园。
在这个例子中:广州动物园是一片内存区域。它有个地址:天河东路168号。
那么司机就是一个指针变量,在小明上车后,这位司机的目标就是天河东路168号这个地址,不能随便更改地址,否则会引起小明的投诉。如果小明想参观广州动物园的风景,只要通过这位司机,就能去到。
在小明去到动物园以后,需要付钱,相当于使用delete,删除司机指向的地址,那么司机就可以为下个顾客服务了。如果不执行delete,就会造成这片内存区域可能会成为无人指向的地址,就是所谓的内存泄漏了。
很明显我们也能看到指针的好处就是一个指针变量动态指向一块地址或者指向空地址。而引用就是在这方面是明显不一样的,引用必须声明的同时被初始化,一开始就确认了地址指向,不能像指针这样动态变化。
delete pi
这里操作实际来说,就是显示地讲该对象占用的内存返还给自由存储区。
在执行这一步之后,p变成了没有定义,在很多机器上,尽管它没被定义,但仍然会保留之前的所指向的对象的地址,虽然他所指向的内存已经被释放,所以还是可以调用他之前的成员变量或者成员函数。
- C++ new 和 delete的一些使用见解
- C++new和delete的使用
- new和delete的使用
- new和delete的使用
- new和delete的使用
- new和delete的使用
- c++:动态内存分配(new和delete的使用)
- C++中new和delete的使用.c
- 重载new和delete的一些规则
- C++:new和delete
- new和delete【C++】
- 【C++】char二维的new和delete
- C++:new和delete的用法
- 【C++】new和delete隐藏的秘密!!!
- new/delete 和 new[]/delete[] 配套使用
- C ++的new、delete
- 一定要配对的使用new和delete
- 一个使用new和delete的示例
- AIR应用场景?
- TCP建立(三次握手)与断开(四次握手)
- 黑马程序员-------网络编程
- Python网络编程的一些代码片断与分析
- .net 后台操作Cookies
- C++ new 和 delete的一些使用见解
- Android UI 优化 [ 类别:Layout ] <merge>的学习
- 每天学一点点--AIX
- ASSERT函数
- IBM大中华区总架构师——话说程序员的职业生涯
- 每天1点执行的oracle JOB样例
- 简单登陆系统的开发
- 软件开发项目风险管理的几点体会
- 兄弟们 如果你的网页老是错位 就要看一下你网页的解析模式 >>>>