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

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;
}
...全文
200 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
  • 打赏
  • 举报
回复
可能是别的地方写越界了
内容概要:本文系统研究了开关频率大于谐振频率(fs>fr)工况下,移相混合控制LLC谐振变换器在低压增益区域的工作特性,深入分析其在变频与移相结合控制模式下的调制机理、工作模态划分及损耗分布规律。通过Simulink平台构建高保真仿真模型,对变换器在不同负载和输入条件下的电压增益、转换效率、关键器件电压电流应力等性能指标进行了全面仿真验证,重点探讨了其在低增益区间的软开关实现能力与效率优化潜力,旨在提升LLC变换器在宽范围输入输出应用中的动态响应与能源转换效率。; 适合人群:从事电力电子变换器设计、高频电源开发及相关领域的高校研究生、科研院所研究人员及企业研发工程师,要求具备扎实的电路理论基础、电力电子技术知识以及一定的Simulink仿真能力。; 使用场景及目标:①深入理解LLC谐振变换器在fs>fr条件下采用移相混合控制的内在工作机理与模态转换过程;②掌握利用Simulink搭建复杂谐振变换器精确仿真模型的方法与技巧;③分析并优化低压增益区的增益特性与损耗构成,为设计高效率、高功率密度的软开关电源提供理论依据和数据支持; 阅读建议:建议读者结合文中所述仿真模型,亲自复现仿真过程,重点观察不同控制参数(如移相比、开关频率)对电压增益曲线和关键波形的影响,并对比传统变频控制策略,深入探究混合控制在拓宽调压范围、提升轻载效率方面的优势,从而深化对现代高效谐振电源设计的理解。
内容概要:本文提出了一种基于粒子群优化算法(PSO)的配电网光伏储能双层优化配置模型,以IEEE33节点系统为标准算例,实现光伏发电单元与储能系统的协同选址与定容优化。该模型采用双层架构设计,上层以投资成本、运行经济性及网络损耗最小为目标优化设备配置方案,下层通过潮流计算评估系统在不同负荷场景下的运行性能,综合考虑电压稳定性、供电可靠性及可再生能源消纳能力,最终通过Matlab编程实现完整求解流程,为高渗透率分布式电源接入背景下的配电网规划提供了有效的技术支撑。; 适合人群:具备电力系统分析基础和Matlab编程能力的研究生、高校科研人员及从事新能源并网、智能配电网规划与优化的工程技术人员。; 使用场景及目标:①研究含高比例光伏接入的配电网规划与运行协同优化问题;②掌握双层优化建模方法与粒子群算法在复杂电力系统问题中的应用技巧;③为实际工程中分布式光伏与储能系统的科学选址与容量配置提供理论依据与仿真验证平台。; 阅读建议:建议读者结合Matlab代码深入理解双层迭代求解机制,重点关注算法收敛性分析、参数敏感性测试,并可通过更换初始种群、调整权重因子或引入其他标准测试系统(如IEEE69节点)进行对比实验,进一步验证所提模型的普适性与鲁棒性。

65,210

社区成员

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

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