| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2411 人关注过本帖
标题:问一个内存泄露的问题--通常人们称之为匿名对象
取消只看楼主 加入收藏
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
 问题点数:0 回复次数:4 
问一个内存泄露的问题--通常人们称之为匿名对象
///例如我有一个类

////////////////////////////////
////类头文件/////
////////////////////////////
#include "iostream.h"

class A
{
public :
    A();
    A(A* p);
    A(int para1,int para2);
    ~A();
    void show();
private :
    int a;
    int b;
};
////////////////////////
////头文件完
/////////////////////////


/////////////////////
///实现部分
////////////////////////
A::A():a(0),b(0)
{
   
}

A::A(A *p)
{
    a=p->a;
    b=p->b;
}


A::A(int para1,int para2):a(para1),b(para2)
{
    
}

void A::show()
{
   cout<<a<<endl;
   cout<<b<<endl;
}
///////////////////////////
////实现部分完
////////////////////////////


//////////////////////////////
/////函数入口部分
//////////////////////////
A* TestFuncA(int a,int b)
{
    return new A(a,b);
    //问题就在这里,申明了匿名对象后,怎么释放匿名对象的内存  
    //例如主函数的调用方式。怎么释放现在分配的内存?
}

int TestFuncB(A *a)
{
    A* temp = a;
   
    if(temp!=NULL)
    {
        temp->show();
        return 1;
    }
    else
    {
        return -1;
    }
}

void main()
{

    TestFuncB(TestFuncA(10 , 20));
    
}
搜索更多相关主题的帖子: 内存 对象 匿名 
2008-10-07 22:29
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
得分:0 
怎么个delete法?

我用VC++6我怕谁?
2008-10-07 22:40
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
得分:0 
我的核心思想就是想问问怎么释放匿名对象的内存。

我用VC++6我怕谁?
2008-10-08 18:21
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
得分:0 
[bo][un]冰烨[/un] 在 2008-10-9 08:48 的发言:[/bo]

A* TestFuncA(int a,int b)
{
    return new A(a,b);
    //问题就在这里,申明了匿名对象后,怎么释放匿名对象的内存  
    //例如主函数的调用方式。怎么释放现在分配的内存?
}
这个的返回值是申请空间的地 ...

这个想法不错,啥时候用完了啥时候释放。如果我 delete temp; 呢?可不可以啊?应该达到相似的效果吧?

我用VC++6我怕谁?
2008-10-09 09:06
VanHorn
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2008-1-8
收藏
得分:0 
[bo][un]StarWing83[/un] 在 2008-10-9 09:44 的发言:[/bo]

1 你可以返回auto_ptr
2 事实上,作为源/汇程序的一个典型,是这样的:
auto_ptr source() {return new A;}
void sink(auto_ptr) {}
这个是优雅而又安全的写法,至于为什么可以这样,你可以自己想想看。注意sin ...

恩,用智能指针。的确是一个不错的思路。谢谢版主,以及楼上的各位热心人。

我用VC++6我怕谁?
2008-10-10 15:46
快速回复:问一个内存泄露的问题--通常人们称之为匿名对象
数据加载中...
 
   



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

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