问个指针的问题!!!!

ming6424 2005-12-05 04:57:47
typedef struct rnode{
void *pData;
struct rnode *next;
}RNode;

typedef struct resultqueue{
RNode *pFront;
RNode *pRear;
}rqueue;

typedef RNode *PtrToRNode;
typedef rqueue *RQueue;




某函数片断
RQueue pRQueue = new rqueue;

pRQueue = SomeFunc();

delete pRQueue;

请问RQueue pRQueue = new rqueue;改成RQueue pRQueue = NULL;
可以吗???
为什么???
最好用哪一种???
...全文
215 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoezinsser 2005-12-05
  • 打赏
  • 举报
回复
RQueue pRQueue = new rqueue;//为pRQueue分配了一块空间
pRQueue = SomeFunc();//pRQueue在先前没使用的情况下,再次为其分配空间,则先前的那块就丢失,从而造成内存泄漏


csucdl 2005-12-05
  • 打赏
  • 举报
回复
内存分配方式不同, new 动态分配, 在运行时得到对象在堆中的偏移地址,
RQueue pRQueue, 没有创建对象, 在栈中创建了一个指针而已

RQueue pRQueue = new rqueue;
pRQueue = SomeFunc();
则造成在堆中分配的内存空间丢失
dx30611 2005-12-05
  • 打赏
  • 举报
回复
pRQueue = new rqueue;//1
以后马上pRQueue = SomeFunc();//2

这里为什么泄漏了???
真的不明白!
........................................................

因为在pRQueue 被释放之前就被重新赋值,而原来的那一块内存就丢了
ming6424 2005-12-05
  • 打赏
  • 举报
回复
pRQueue = new rqueue;//1
以后马上pRQueue = SomeFunc();//2

这里为什么泄漏了???
真的不明白!
guyanhun 2005-12-05
  • 打赏
  • 举报
回复
fangrk 说得对.~~
guyanhun 2005-12-05
  • 打赏
  • 举报
回复
在这里是没影响,
fangrk 2005-12-05
  • 打赏
  • 举报
回复
RQueue pRQueue = new rqueue;

pRQueue = SomeFunc();

delete pRQueue;

当然是RQueue pRQueue =0;了
pRQueue = new rqueue;//1
以后马上pRQueue = SomeFunc();//2
那么第一次分配的就泄漏了,而且也没用到
dragonzxh 2005-12-05
  • 打赏
  • 举报
回复
可以,但要去掉delete pRQueue
一个是动态分配的,一个是静态分配的,在这里应该没什么妨碍。
哪一种好:看需求。

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧