关于成员对象指针动态分配地址的问题?

quanshangdu 2009-03-24 10:50:24
initDistr是一个成员变量 double* initDistr; 我在构造函数中将它赋值initDistr=NULL; 在析构函数中
if(initDistr!=NULL)
{
delete[] initDistr;
}

我在一个成员函数中(不是构造函数)给这个指针赋值,因为我要多次使用同一个对象,所以赋值前我先判断一下,然后再分配地址
if(initDistr!=NULL)
{
delete[] initDistr;
initDistr=NULL;
}
initDistr=new double[5];

结果运行时出现错误,把if(initDistr!=NULL) 去掉就好了,请问应该怎么改呢?
{
delete[] initDistr;
initDistr=NULL;
}
...全文
203 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Paradin 2009-03-25
  • 打赏
  • 举报
回复
你确定是那里出的错。
不如发上来看看
quanshangdu 2009-03-25
  • 打赏
  • 举报
回复
就是我在为指针分配地址前,想判断一下,现在的指针是否指向动态地址,指向的话就释放空间。然后重新分配。但运行时出错。
if(initDistr!=NULL)
{
delete[] initDistr;
initDistr=NULL;
}
删除上面的判断代码就好了。出错提示是delete [] initDistr; 有问题。 想各位说的,如果有越界操作的话,那运行时会出现错误的。但删除上面的代码后一切正常。我用的是VC++ 6.0
  • 打赏
  • 举报
回复
给全代码才看的清楚
xfinal2006 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wangyaosuper 的回复:]
引用 9 楼 xfinal2006 的回复:
其实不加入NULL判断也没问题, delete遇到null时会返回



这个不同的编译器不一样
[/Quote]

恩, 不过C++标准保证删除NULL指针不会出错.
wangyaosuper 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xfinal2006 的回复:]
其实不加入NULL判断也没问题, delete遇到null时会返回
[/Quote]


这个不同的编译器不一样
xfinal2006 2009-03-24
  • 打赏
  • 举报
回复
其实不加入NULL判断也没问题, delete遇到null时会返回
cyldf 2009-03-24
  • 打赏
  • 举报
回复
成员变量有指针的,在构造函数中调用new申请空间,而不是initDistr=NULL;
yihan7h 2009-03-24
  • 打赏
  • 举报
回复
no new no delete
herman~~ 2009-03-24
  • 打赏
  • 举报
回复
if(initDistr!=NULL)
{
delete[] initDistr;
}


这里加入NULL判断是必须的

感觉这样动态new方式不太安全,最好使用 容器后者静态类来代替
biosli 2009-03-24
  • 打赏
  • 举报
回复
兄弟,你提供的代码没有问题,那个判断NULL的操作是应该加的。
看看你运行到那个NULL判断的时候指针是不是为你预想的,就是说你的构造函数里面的initDistr是不是真的为NULL。
如果这里设为NULL了,而后面没有改动过,却报错了,你就检查一下你initDistr声明前面的那些变量有没有越界的吧。
liliangbao 2009-03-24
  • 打赏
  • 举报
回复
按你说的好像没有问题!
还是将更细的代码贴出来,看看其他地方是否有问题!
lgccaa 2009-03-24
  • 打赏
  • 举报
回复
你在构造函数应该是申请内存空间,而不是什么赋值initDistr=NULL;在构造函数里把initDistr=NULL改为initDistr=new double[5];
freshairfly 2009-03-24
  • 打赏
  • 举报
回复
你检查一下使用initDistr的地方,看看是不是有写越界的可能
freshairfly 2009-03-24
  • 打赏
  • 举报
回复
可能是别的地方写越界了

65,211

社区成员

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

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