关于new分配内存的问题

吾子墨鸿 2007-12-01 01:16:34
我的程序如下:
class matrix
{
private:
double *array;
double 8invarray;

int m,n;
public:
matrix();
matrix(int i,int j);
~matrix();

void SetSize();
};

.cpp文件

matrix::matrix()
{
m=3;
n=3;
array=new double[m*n];
memset(array,0,sizeof(array));
}

matrix::matrix(int i,int j)
{
m=i;
n=j;
array=new double[m*n];
memset(array,0,sizeof(array));
}

matrix::~matrix()
{
}

void matrix::SetSize()
{
....完成某些功能
}

我在上面的类中使用new给array分配了内存,因为我在另一类中要用到array,用delete删除array后会出错,所以并没有使用delete删除。
我在另一类中引用:
matrix F;
.......
F.array做某些事
......
使用这个matrix类完成某些功能。我用VC++6.0编译后并没用显示出现内存泄漏,我感到很奇怪。请教高手为什么会这样?
若是有内存泄漏我应该怎么修改这个程序呢?
...全文
104 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
long000 2007-12-02
  • 打赏
  • 举报
回复
我使用的VC6.0也有楼主遇到的问题,用new分配了空间以后即使不使用delete也能通过编译正常运行,
不知是否什么地方没有设置对,
同意8楼的意见,用析构函数释放内存
mysticc 2007-12-02
  • 打赏
  • 举报
回复
这论坛真变态,下载点资料还要分数。
过去的我 2007-12-02
  • 打赏
  • 举报
回复
我也觉得 不能以数字开头声明变量..
HelloDan 2007-12-02
  • 打赏
  • 举报
回复
double 8invarray;
定义或声明能数字开始的吗?印象中C/C++和汇编,还有很多语言都不行的。
xiaoQ008 2007-12-02
  • 打赏
  • 举报
回复
matrix::~matrix()
{
delete [] array;
}
这样应该没错啊
xalangying 2007-12-01
  • 打赏
  • 举报
回复
那你用了matrix::~matrix()
{
delete [] array;
}吗,
不要尝试这个matrix类申请的内存在类外 delete ,否则那些matrix类的临时变量申请的内存怎么办
最好你能把代码贴出来看看
吾子墨鸿 2007-12-01
  • 打赏
  • 举报
回复
另外我调试的时候是debug设置,应该会出现内存泄漏的提示的。我用VC.NET调试也是一样没出现内存泄漏的提示,这肯定不是我的设置问题,因为我特意用一个有内存泄漏的程序测试过,会出现提示的。
所以想问一下,这个内存泄漏的提是不是在某些条件下才提示啊?有条件的?

Dumping objects ->
d:\test.cpp(10) : {45} normal block at 0x003410C8, 2 bytes long.
Data: <AB> 41 42
Object dump complete.
xalangying 2007-12-01
  • 打赏
  • 举报
回复
{
matrix F;
.......
F.array做某些事

} // 运行到这里才调用 F.~matrix();

吾子墨鸿 2007-12-01
  • 打赏
  • 举报
回复
在析构函数中加上:
delete []array
不会影响我在另一类中使用F.array吗?我总以为它会析构掉的。我周一去办公室调试一下,如果问题解决就散分。
tailhuang 2007-12-01
  • 打赏
  • 举报
回复
memset(array,0,sizeof(array));

sizeof(array) 是 ?
LZHWWY 2007-12-01
  • 打赏
  • 举报
回复
我在另一类中引用:
matrix F;
.......
F.array做某些事
......



你在另一个类里的matrix类型的成员变量 F只是一个实例阿,和你之前想构造和析构的matrix X;完全是两回事。。。
所以放心在析构总调用delete[]吧
tiantangniao232 2007-12-01
  • 打赏
  • 举报
回复
matrix::~matrix()
{
delete [] array;
}
xalangying 2007-12-01
  • 打赏
  • 举报
回复
你没delete的话一定会出现内存泄漏的,VC++6.0有没有显示可能是你的设置问题
matrix::~matrix() 中就应该 delete , 这也没阻碍F.array做某些事


64,647

社区成员

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

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