首页
社区
课程
招聘
[旧帖] [讨论]关于类成员的释放问题 0.00雪花
发表于: 2009-5-7 21:59 3726

[旧帖] [讨论]关于类成员的释放问题 0.00雪花

2009-5-7 21:59
3726
一个类结构如下:

.h文件

class A{
public:
         A();
         virtual ~A();

static  char *p;
}

.ccp 文件

char *A::p=NULL;
A::A()
{
   if(!p)
      p=new char[100];
}

我想创建多个对象, 但是p的内存地址块只有一个, 在创建第一个对象时申请内存,在最后一个对象销毁时释放p的内存,请问如何处理啊 ??

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
#include <iostream.h>
#include <string.h>

class A
{
public:
   A();
   virtual ~A();
   static    char*  p;
   static    char*  GetChar();

};

char * A::p=0;
A::A()
{

        if (p==NULL)
        {
                p=new char[100];
                strcpy(p,"TEXT");
        }
               
}
char*   A::GetChar()
{
        return p;
       
}
A::~A()
{

}

void main()
{       
        A a1;
        A a2;
        cout << a1.GetChar()<<endl;       
        cout<<a1.GetChar()<<endl;
}

我的测试代码,创建第一个对象时申请内存,我已经实现了,如何在销毁最后一个对象时,释放内存 ,麻烦高手给指点!!!!
2009-5-7 22:23
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
singleton模式
2009-5-8 14:27
0
雪    币: 107
活跃值: (1623)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4
析构里delete p 就可以 ,这个类拷贝来说很危险了
2009-5-8 14:37
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
加个引用计数吧
2009-5-8 15:37
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
怎么实现啊 ,麻烦高手给个 思路    啊
2009-5-9 13:11
0
雪    币: 156
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
加个静态变量作为计数器,构造函数里加,析构函数里减,减到0就释放内存呗
另外:Singleton模式即单例模式,是指一个类只能创建一个实例。
2009-5-10 19:44
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢了 ls啊了
2009-5-11 13:50
0
雪    币: 144
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我这边没法单步~比较郁闷阿~不过我现在类中设置static的计数变量,发现连接失败(想想觉得类中设置静态是不太对),然后我就在构造函数中设置,在析构函数中判断,发现提示未定义,也是阿,毕竟是在构造中定义的,只好在类中定义个变量保存加后的值,发现好像也不太行~在思考中
2009-5-11 18:13
0
游客
登录 | 注册 方可回帖
返回
//