我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

«1 2 » Pages: ( 2/2 total )
本页主题: 一个C++里资源管理的小问题 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ seven /'seven/ num. 七 ]


怪了,有时有问题,有时又没有~~~~
顶端 Posted: 2007-08-23 21:29 | [15 楼]
zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ health /helθ/ n. 健康(状况) ]


int main(int argc, char **argv)
{
    char *p = new char[sizeof("hello,world")];
    p[sizeof("hello,world")] = 0x0;//改动了这里,delete就会出问题,估计是破坏了识别信息了

    strcpy(p,"hello,world");
    delete[] p;

    return 0;
}
顶端 Posted: 2007-08-23 21:32 | [16 楼]
chenyukang



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
发贴: 2275
威望: 0
浮云: 1127
在线等级:
注册时间: 2006-09-24
最后登陆: 2020-08-17

5come5帮你背单词 [ faint /feint/ a. 微弱的,微小的,暗淡的;vi. 晕倒,昏厥 ]


new 申请的肯定不是以0x0开始的啊...
顶端 Posted: 2007-08-23 21:34 | [17 楼]
zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ report /ri'po:t/ vt. & n. 报告,报道,汇报;vi. 报到,报告 ]


Quote:
引用第17楼chenyukang于2007-08-23 21:34发表的  :
new 申请的肯定不是以0x0开始的啊...


不是,诡异的C++
还是去研究一下它的实现算了。
我估计是new会在申请的结尾标上一个标识符,
delete会去找到这个标识符,再去释放
只是我的想法,不知道对不对
顶端 Posted: 2007-08-23 21:39 | [18 楼]
kangtalc



性别: 帅哥 状态: 该用户目前不在线
头衔: 揍敌客·奇犽
等级: 希望之光
家族: 万人坑恋影部落
发贴: 1723
威望: 5
浮云: 1113
在线等级:
注册时间: 2005-09-21
最后登陆: 2008-06-29

5come5帮你背单词 [ verify /'verifai/ vt. 证实,证明,查清,核实 ]


Quote:
引用第18楼zhoubaozhou于2007-08-23 21:39发表的  :


不是,诡异的C++
还是去研究一下它的实现算了。
我估计是new会在申请的结尾标上一个标识符,
.......


不知道。。。。。
顶端 Posted: 2007-08-23 21:44 | [19 楼]
lxlcn



性别: 帅哥 状态: 该用户目前不在线
等级: 鹤立鸡群
发贴: 1310
威望: 0
浮云: 1741
在线等级:
注册时间: 2005-10-06
最后登陆: 2011-06-29

5come5帮你背单词 [ matter /'mætə/ n. 事情,问题,毛病,麻烦,困难,物质,物品 ]


发现在我的VC6.0上没有问题.
p[sizeof("hello,world")] = 0x0;这句是错的吧
顶端 Posted: 2007-08-24 16:23 | [20 楼]
zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ pledge /pled3/ n. 誓约,保证,保证物,信物;vt. 发誓,保证,抵押 ]


Quote:
引用第20楼lxlcn于2007-08-24 16:23发表的  :
发现在我的VC6.0上没有问题.
p[sizeof("hello,world")] = 0x0;这句是错的吧


没有,我就是要破坏字符串0x0后那一个字节,这样delete就会出错了
编译是没问题的
运行会出错
顶端 Posted: 2007-08-24 16:30 | [21 楼]
lxlcn



性别: 帅哥 状态: 该用户目前不在线
等级: 鹤立鸡群
发贴: 1310
威望: 0
浮云: 1741
在线等级:
注册时间: 2005-10-06
最后登陆: 2011-06-29

5come5帮你背单词 [ until /ən'til/ 直到…为止,在…以前,直到… ]


Quote:
引用第21楼zhoubaozhou于2007-08-24 16:30发表的  :


没有,我就是要破坏字符串0x0后那一个字节,这样delete就会出错了
编译是没问题的
运行会出错

我记得那个标志是在前边的吧?
你看一下内存就知道了,你强改了之后,那个标志没有变的,
感觉后边delete就是因为标志没有变长而出错.
远程图片:111.JPG 远程图片:222.JPG
顶端 Posted: 2007-08-24 19:16 | [22 楼]
zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ scout /skaut/ n. 侦察员,童子军;v. 侦察,搜索 ]


Quote:
引用第22楼lxlcn于2007-08-24 19:16发表的  :

我记得那个标志是在前边的吧?
你看一下内存就知道了,你强改了之后,那个标志没有变的,
感觉后边delete就是因为标志没有变长而出错.


非常感谢,你的说法很有道理,有可能就是这样实现的。
什么时候把C++实现的源码下下来,看一下具体的实现
应该它是用最简单的方法来实现的,为了效率
再次谢谢lxlcn
顶端 Posted: 2007-08-24 21:56 | [23 楼]
zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ inside /in'said/ a. 里面的,内部的;ad. 在内部,在里面;prep. 在…里面,在…内部;内部 ]


但是有一个问题,用这样来实现标记,那内存管理不是很麻烦?
如果是我,我会这样实现
[标记]XXXXXX
指针指向第一个X处,delete时,只要查一下X前面的标记就可以知道要delete多少个字节了
一点陋见

还是看一下源码
顶端 Posted: 2007-08-24 22:00 | [24 楼]
zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ interior /in'tiəriə/ a. & n. 内部(的),内地(的),国内(的),室内(的) ]


跟踪了一下,标记是在申请内存的后面
如申请
XXXXXXXXXX
这些空间,申请后会在其后面加
FD FD FD FD这样的标识
delete后
变成EE FE EE FE
顶端 Posted: 2007-08-24 22:10 | [25 楼]
«1 2 » Pages: ( 2/2 total )
我来我网·5come5 Forum » 程序员之家

Total 0.012354(s) query 5, Time now is:11-23 13:22, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号