一个函数内的代码长短跟运行效率和内存占用有关吗?(欢迎大家讨论)

tangx100 2007-11-08 01:52:51
如题
如果一个函数内的代码太长了,把其中的一部分拿出来放到另一个自定义函数中进行调用,这样会减少内存占用吗?
一般应用程序在运行时占用内存不断增加,主要是有些指针new后没有得到释放造成的
还有其它原因吗?
跟一个函数代码长短有关吗?
...全文
295 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinxa 2007-11-16
  • 打赏
  • 举报
回复
代码的长短跟内存的占用大小没有直接关系,在于你在设计中调用到的代码结构
前面一个仁兄说的先NULL再Delete 
可我经常是先Delete再NULL 
关注中....
pig4210 2007-11-15
  • 打赏
  • 举报
回复
跑题了吧,大家。
函数内的代码长短跟运行效率和内存占用有关吗?
代码长短并不与运行效率有很大关系,比如一句汇编语句jmp $,两个字节,能够让程序死循环。
2^N个nop,够多吧,执行起来也是飞一样。忽略不计。
我觉得运行效率在于代码转换成汇编级别后的内存操作有一定关系。如果内存操作多了,速度自然就慢了,xor eax,[esp]显然比xor eax,esp慢多了。
一段短循环,和一段过程相比,虽然代码量少,但时间长。
另外,只要有函数调用就会有系统开销,如果调用过于频繁,这些开销就不能忽视了。这也就是为什么提倡使用online函数的原因。
tangx100 2007-11-15
  • 打赏
  • 举报
回复
但在屡次new和delete之间产生的空余小内存(此不易被分配),可能会导致无用的内存碎片
wenyongjie 2007-11-15
  • 打赏
  • 举报
回复
new 一个指针不用后,最好先NULL后再Delete,避免野指针的出现(不知这样子说对不?)
nuistcola 2007-11-14
  • 打赏
  • 举报
回复
如果new了一个结构指针变量
在不用时delete后,是否真释放了内存?
是的,将delete将该指针指向的内存释放,并把指针置NULL。
分解函数一般是为了使函数更加清晰,功能性更强,查找错误更方便,并不减少内存占用,反而会增加一些掉用的开消,当然不是太大。
cczlp 2007-11-14
  • 打赏
  • 举报
回复
内存不断增加,和代码量没有关系,和代码内容有关。
tangx100 2007-11-14
  • 打赏
  • 举报
回复
如果new了一个结构指针变量
在不用时delete后,是否真释放了内存?
tangx100 2007-11-09
  • 打赏
  • 举报
回复
在一个运行程序中我曾经用SetProcessWorkingSetSize函数来使内存极度减少,这个方法从表面上来挺不错
内存是减少了,但虚拟内存却不断增加,所以从根本上也没有改变内存占用问题
crescent_star 2007-11-09
  • 打赏
  • 举报
回复
代码中调用函数跟内存的占用没有什么大关系
使用函数一是为了使整个程序的整体结构清晰,也是为了方便以后的调用
整体的一个oo思想
laowang2 2007-11-09
  • 打赏
  • 举报
回复
代码长短跟程序的体积有关,不会跟运行效率和内存占用有关.
「已注销」 2007-11-08
  • 打赏
  • 举报
回复
应该没有关系吧,效率应该和系统的结构、算法有关系,当然内存管理也是比较关键的。
i_love_pc 2007-11-08
  • 打赏
  • 举报
回复
也不是绝对的!
tangx100 2007-11-08
  • 打赏
  • 举报
回复
的确!
代码不要重复,这点很重要
i_love_pc 2007-11-08
  • 打赏
  • 举报
回复
函数的作用还在于不用编写重复的代码!

占用内存的大小决定于程序的需要,只要避免不必要的浪费和注意垃圾的回收就可以了。
至于更高级的内存管理模式偶也不懂!
tangx100 2007-11-08
  • 打赏
  • 举报
回复
谢谢i_love_pc 的答复
单独写函数也在于一次只做一件事情及易于理解
那如何避免内存占用太大呢?
i_love_pc 2007-11-08
  • 打赏
  • 举报
回复
是否需要单独写函数看功能的需要,跟占用内存关系不大。

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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