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

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

zhoubaozhou





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

5come5帮你背单词 [ instinctive /in'stiŋktiv/ a. 本能的,天性的 ]


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





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

5come5帮你背单词 [ incompetent /in'kompitənt/ a. 无能力的,不胜任的 ]


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帮你背单词 [ new zealand /'nju: 'zi:lənd/ n. 新西兰 ]


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





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

5come5帮你背单词 [ campus /'kæmpəs/ n. (大学)校园 ]


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帮你背单词 [ conversation /konvə'seiən/ n. 会话,谈话 ]


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帮你背单词 [ snowstorm /'snəusto:m/ 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帮你背单词 [ vegetarian /ved3ə't/əriən/ n. 素食者;a. 吃素的 ]


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帮你背单词 [ fetus // n. 胎,胎儿 ]


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帮你背单词 [ test /test/ n. & vt. 试验,测试,检验 ]


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帮你背单词 [ pretend /pri'tend/ v. 假装,装扮,试用 ]


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

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





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

5come5帮你背单词 [ emphasis /'emfəsis/ 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.009161(s) query 5, Time now is:11-23 03:59, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号