| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 762 人关注过本帖
标题:delete运算符的问题?
只看楼主 加入收藏
明天不一样
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-8-31
收藏
 问题点数:0 回复次数:7 
delete运算符的问题?

用new运算符创建数组:new *p=int[10];
然后用delete删除数组:delete [ ] p;
问题是:用delete删除数组后:数组占用的内存被释放,可是指针变量p所占用的内存是否被释放?

搜索更多相关主题的帖子: delete 运算符 
2007-01-27 21:31
蓝鹰
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-8-26
收藏
得分:0 
delete [ ] p是释放p所指向的内存空间,不释放p所用的内存。试想以下,如果p所用的内存被释放了,那指针p也就不存在了。
2007-01-27 21:56
maxlea
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-12-7
收藏
得分:0 
delete 释放的内存必须是 new 创建的,然而p是指向新创建的内存的一个指针变量,这个指针变量拥有自己的内存,不会被 delete 释放

work~work
2007-01-27 22:17
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
p占用的内存会在P的作用域消失时由系统释放
就像int ,double等变量一样
我想是这样的

2007-01-29 12:23
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
顶2.3楼的。
嘿嘿~~~~~~~~~~~·

~~我的明天我知道~~
2007-01-30 16:48
gao_gao86
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-3-3
收藏
得分:0 
回复:(pinglideyu)顶2.3楼的。嘿嘿~~~~~~~~~~~·
p所指向的内存空间被释放了,但p占的内存是不释放的,p还是指向那片内存区域.应该是这样的.
2007-03-03 17:00
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
int *p=new int[10];
p在声明时被定义赋值,既new函数返回的一个地址(这个地址是计算机随机分配的用户指定大小的一块内存地址的最低位).
计算机前1024K以外的内存就是我们的程序使用的内存,其实只是分为2种:使用中内存和空闲内存.
计算机对使用中内存不能再进行分配操作,只能在空闲内存中选择.
new分配内存,就是告诉计算机这块内存现在属于被使用状态,以后的内存分配不能在用这块内存.
而delete则是告诉计算机这块内存为空闲内存,以后的内存分配可以使用这部分内存地址.

内部存储和外部存储我想在这方面也是相似的吧?

比如清空回收站就是一个例子:

很多时候即使你清空回收站,一些高手还是可以把很多数据恢复.

我认为:
原因也就是回收站被清空只是告诉计算机这部分外部存储单元已经为闲置部分,可以对这部分存储单元进行写操作。未闲置部分不允许写操作,被计算机保护.

所以只要回收站被清空后,位进行任何数据写操作的话,也是可以把删除的数据还原的,具体操作不会.

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-03-03 18:17
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
至于delete是标记int[10]这块内存现在为未使用状态,所以与p无关。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-03-03 18:18
快速回复:delete运算符的问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014860 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved