社区
C语言
帖子详情
问一个问题,C++中指针定义后,在什么情况下非需要new操作
愤怒对抗喳喳
2001-07-21 03:36:41
如果说一个结构
HOSTENT *hp;
函数gethostbyaddr返回HOSTENT *
这样写
HOSTENT *hp;
hp=new HOSTENT;
hp=gethostbyaddr();
这里的hp=new HOSTENT能不能不写,是不是非得写
...全文
403
21
打赏
收藏
问一个问题,C++中指针定义后,在什么情况下非需要new操作
如果说一个结构 HOSTENT *hp; 函数gethostbyaddr返回HOSTENT * 这样写 HOSTENT *hp; hp=new HOSTENT; hp=gethostbyaddr(); 这里的hp=new HOSTENT能不能不写,是不是非得写
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
960
2001-07-23
打赏
举报
回复
还是不写的好
roland_c
2001-07-23
打赏
举报
回复
如果这个函数本身会返回它分配的内存区域的地址的话,那么NEW是不必要的,否则的话就需要
lyy_hill
2001-07-23
打赏
举报
回复
1
不能写,new出来的内存引起泄漏。因为你给hp new了一块内存后又把这个指针的值修改了,这样就引起泄漏。你可以在申明hp时用NULL初始化一下就可以了。
darkay
2001-07-23
打赏
举报
回复
这个函数返回的是一个指针,它指向的东西是,gethostbyname的一个静态存储区,没有必要也不应该为hp分配空间。
Chxis
2001-07-23
打赏
举报
回复
那怎样分清是
动态分配的,还是静态的局部变量的地址????
愤怒对抗喳喳
2001-07-23
打赏
举报
回复
这要看这个函数返回的指针是什么,假如是动态分配的
什么是指针动态分配呀
NowCan
2001-07-22
打赏
举报
回复
你说的那个情况不要new。
tiongkohlang
2001-07-22
打赏
举报
回复
1
绝对不能写。
很显然,写了,那么new出来的内存肯定没法释放。(如果这部分内存跟着程序结束而被释放,那么好一些,不过运行过程中还是占用了内存。)
这里只有一个问题,就是在
HOSTENT *hp;
hp=gethostbyaddr();
之后hp能不能被delete的问题。这要看这个函数返回的指针是什么,假如是动态分配的,就应该delete。假如不是,比如就返回一个静态的局部变量的地址,那么就不应该delete。
愤怒对抗喳喳
2001-07-22
打赏
举报
回复
没有一个定论吗
好像写不写new都可以编译通过,到底会出现什么问题
julio
2001-07-22
打赏
举报
回复
我认为用new是必要的,因为gethostbyaddr()是不知道大小的,没法为它分配内存。
仅仅是个人的意见。
ljf1107
2001-07-22
打赏
举报
回复
要写,new是从堆中分配内存,如不用的话,则与gethostbyaddr()的返回值指向同一内存区域
,而gethostbyaddr()的返回值是用new分配的内存吗?我想不是吧。这样在调用复制构造函数的时候,可能会出现浅复制的问题。各位看官,是不是呀?
holysword
2001-07-22
打赏
举报
回复
1
我认为根本不需要进行new操作,因为这样会造成内存泄漏。
而且最好是这样写:
HOSTENT *hp = NULL;
hp=gethostbyaddr();
c_word
2001-07-22
打赏
举报
回复
我认为hp=new HOSTENT 是多余的,
已经有有了hp=gethostbyaddr().
bnwxf
2001-07-22
打赏
举报
回复
1
没找到gethostbyaddr的源代码,所以只能瞎猜:
gethostbyaddr函数的内部,静态声明了一个HOSTENT结构。函数结束后,
这个HOSTENT结构的地址仍然有效,所以它才敢返回指针。
这样,就不需要调用者自己分配内存了。
chinade
2001-07-21
打赏
举报
回复
我看在这可以不写.
函数gethostbyaddr都返回HOSTENT * 给hp
那前面还要hp=new HOSTENT
不是多余吗.
skymost
2001-07-21
打赏
举报
回复
非调用对象的构造函数时,呵呵:-)
愤怒对抗喳喳
2001-07-21
打赏
举报
回复
是吗,一般来说,我如果没有用new,就可以编译,运行却错误,因为没有分配内存,这里是不是不用分配
E
2001-07-21
打赏
举报
回复
不是能不写,是不能写。
hp=new HOSTENT;不能写,写了会有内存漏洞!
new 分配了一段空间,之后hp指向了另一段内存。new 分配的空间不就没人用了吗?
愤怒对抗喳喳
2001-07-21
打赏
举报
回复
如果说调用new是为了给他分配一段内存,可是如果已经有其他的这样的结构的变量复制给他,还需要分配内存吗
efoxxx
2001-07-21
打赏
举报
回复
new会调用构造函数对你的指针进行初始化!这是很好的习惯。
加载更多回复(1)
Delphi 13.1控件之Wub1.8.zip
Delphi 13.1控件之Wub1.8.zip
(55页PPT)文旅景区新春系列活动策划方案61.pptx
(55页PPT)文旅景区新春系列活动策划方案61.pptx
SCI级别多策略改进鲸鱼优化算法(HHWOA)和鲸鱼优化算法(WOA)在CEC2017测试集函数F1-F30寻优对比
【SCI级别】多策略改进鲸鱼优化算法(HHWOA)和鲸鱼优化算法(WOA)在CEC2017测试集函数F1-F30寻优对比内容概要:本文主要介绍了多策略改进鲸鱼优化算法(HHWOA)与传统鲸鱼优化算法(WOA)在CEC2017测试集的30个基准函数(F1-F30)上的寻优性能对比研究。通过引入多种优化策略对原始WOA进行改进,提升了算法的收敛速度、全局搜索能力和避免陷入局部最优的能力。实验结果表明,HHWOA在多数测试函数上表现优于标准WOA,验证了所提改进策略的有效性。该研究为智能优化算法的性能提升提供了可行的技术路径,并适用于复杂工程优化
问
题
的求解。; 适合人群:具备一定算法基础的研究生、科研人员及从事智能优化、人工智能、自动化等领域工作的工程技术人员,熟悉MATLAB编程者更佳。; 使用场景及目标:①用于解决复杂的数值优化
问
题
,如工程参数优化、机器学习超参数调优等;②作为智能优化算法教学与研究的案例,帮助理解鲸鱼优化算法的原理及其改进方法;③为相关领域提供高性能优化工具的开发参考。; 阅读建议:建议结合提供的Matlab代码实现进行实验复现,深入理解算法细节与改进策略的作用机制,同时可通过更换测试函数或应用场景进一步拓展研究深度。
针对电池限制的异构多机器人团队任务规划器.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
为产业园区选择数字化升级路线图,
需要
关注哪些核心要点?.docx
聚焦AI+技术转移、院所成果转化与知识产权管理,以人工智能为底座的数智化科技创新平台,为提升区域科技管理与创新能力提供全面解决方案,驱动地方产业升级。
C语言
70,037
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章