返回信息流最近用函数写了个程序,打算改成类的。都没问题了,最后剩下个内存有问题,排查不出来错误。简化如下:
这个类的H文件:
#ifndef KDF_H
#define KDF_H
class KDF
{
private:
//- Disallow default bitwise copy construct
KDF(const KDF&);
//- Disallow default bitwise assignment
void operator=(const KDF&);
protected:
int name_;
//- Number of nodes
int nodes_;
//- Value of sigma
double sigma_;
//- moments
double* momentsOri_;
public:
//- Construct from components
KDF
(
const int& name
);
//- Destructor
~KDF();
};
#endif
C文件:
#include "KDF.H"
KDF::KDF
(
const int& name
):
name_(name)
{
nodes_ = 3;
momentsOri_ = new double(2*nodes_ + 1);
//if (nodes_ < 4)
{
momentsOri_[0] = 0.0;
momentsOri_[1] = 0.0;
momentsOri_[2] = 0.0;
momentsOri_[3] = 0.0;
momentsOri_[4] = 0.0;
momentsOri_[5] = 0.0;
momentsOri_[6] = 0.0;
}
}
KDF::~KDF()
{
delete momentsOri_;
};
主函数很简单:
int main()
{
int a = 1;
KDF gaussian(a);
return 0;
}
编译运行都没问题,怎么内存出错呢。
我感觉应该是构造函数new那里赋值的问题
这是一条镜像帖。来源:北邮人论坛 / cpp / #88712同步于 2015/9/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
C++累的动态内存分配,编译没问题计算也能成功,最后提示内存泄
sharonyue
2015/9/21镜像同步15 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 timruning 的大作中提到: 】
: 问个比较傻的问题,c++不回收内存行么?感觉容易犯错
教材说要回收
我简单试了下可以不回收不报错,大型程序bug就不清楚了
可以啊
但是你的机器内存不是无限大的 不回收的话 内存泄露 运行时间一长占用内存越来越多,机器会卡顿、死机
但是你又说为什么他自己不会自动识别内存、自动释放?
是的,他不会,除非你关闭了进程,关闭进程之后,系统就会帮你把所有内存释放出来了(除了共享给其他进程并且inuse不为0的内核对象)。
【 在 timruning 的大作中提到: 】
: 问个比较傻的问题,c++不回收内存行么?感觉容易犯错
C:10 momentsOri_ = new double[2*nodes_ + 1];
C:26 delete [] momentsOri_;
【 在 sharonyue 的大作中提到: 】
: 最近用函数写了个程序,打算改成类的。都没问题了,最后剩下个内存有问题,排查不出来错误。简化如下:
: 这个类的H文件:
: [code=c]
: ...................