如下代码会导致内存泄漏吗?谢谢

leizh007_IOS 2015-09-14 04:33:10
如下代码会导致内存泄漏吗?为什么?谢谢
auto a = new long long(1); auto b = (float*)a; delete b; 
...全文
188 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-09-15
  • 打赏
  • 举报
回复
任何理论,离开了实践的检验,和空谈没什么两样。
大大大白 2015-09-14
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏! 不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实! 有人说一套做一套,你相信他说的还是相信他做的? 其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗? 不要写连自己也预测不了结果的代码!
一味的迷信执行结果,执行出来可以就是可以,执行出来不可以就是不可以?不去看理论解释,怎么能知道为什么可以还是不可以
大大大白 2015-09-14
  • 打赏
  • 举报
回复
不会泄漏的,堆本质是一个链表,指针只是表示了动态内存的位置,动态申请的内存块的大小在链表中保存(这就是为什么动态内存越界访问以后free会出问题),所以,释放的时候并不会有问题
mujiok2003 2015-09-14
  • 打赏
  • 举报
回复
auto b = (float*)a;
如果a 和 b 相等, 那就没有问题。
iyomumx 2015-09-14
  • 打赏
  • 举报
回复
the behavior is undefined 虽然在大多数实现中会使用malloc来实现operator new使得这样的代码能够正常运行,但UB始终是UB,不要写这样的代码
赵4老师 2015-09-14
  • 打赏
  • 举报
回复
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏! 不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实! 有人说一套做一套,你相信他说的还是相信他做的? 其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗? 不要写连自己也预测不了结果的代码!

64,639

社区成员

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

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