游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3930|回复: 12

[求助]关于指针和内存的一个问题

[复制链接]

2

主题

7

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2004-7-31 20:21:00 | 显示全部楼层 |阅读模式
有以下代码:
int * p1=new int;
int * p2;
p2=p1;
如果想释放内存,是delete p1;还是delete p2;还是delete p1;delete p2;会产生迷途指针么? [em24]

21

主题

69

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2004-7-31 20:36:00 | 显示全部楼层

Re:[求助]关于指针和内存的一个问题

全delete比较好吧!
delete一个的话会有一个指向未知的指针吧!
呵呵,我是新手,请多指教!

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2004-7-31 21:53:00 | 显示全部楼层

Re:[求助]关于指针和内存的一个问题

应该delete p1,
然后p1 = NULL, p2 = NULL

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2004-7-31 22:09:00 | 显示全部楼层

Re:[求助]关于指针和内存的一个问题

delete p1或者p2都可以。

7

主题

67

帖子

67

积分

注册会员

Rank: 2

积分
67
QQ
发表于 2004-7-31 22:19:00 | 显示全部楼层

Re:[求助]关于指针和内存的一个问题

只能delete一个,重复delete会导致非法操作。delete完了两个指针都仍然指向该内存,所以两个指针要置空

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2004-8-1 00:14:00 | 显示全部楼层

Re: Re:[求助]关于指针和内存的一个问题

tarkey: Re:[求助]关于指针和内存的一个问题

delete p1或者p2都可以。

最好不要这样做,会损害程序的清晰性
另外,
指针,特别是DX对象的指针在使用前和释放后一定要置空,
至于为什么,
很多书上都有举例说明,
俺就偷懒了,呵呵

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2004-8-1 00:50:00 | 显示全部楼层

Re:[求助]关于指针和内存的一个问题

。。。。。
最好的方法是自己建一个类。
当赋值的时候,本身ref ++;
然后重载delete,delete的时候,找自己的ref,把ref都置为0就好了。

28

主题

433

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
发表于 2004-8-1 07:30:00 | 显示全部楼层

Re:[求助]关于指针和内存的一个问题

指针 被赋 NULL 是为了 防止 无效指针 被意外引用.
NULL 是一个安全地址.
还有一个用途是指明调用是否成功!

指针为非NULL 时成功~

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2004-8-1 09:25:00 | 显示全部楼层

Re:[求助]关于指针和内存的一个问题

定义个宏
#define SAFE_DELETE(p)       { if(p) { delete (p);     (p)=NULL; } }
#define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p);   (p)=NULL; } }

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2004-8-1 09:34:00 | 显示全部楼层

Re:[求助]关于指针和内存的一个问题

我也碰到过这种问题。现在一直使用引用计数和智能指针来解决
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-7-4 10:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表