Fak*_*ken 11 c++ memory-leaks goto
我有一个程序,我需要打破一大堆嵌套for循环.到目前为止,大多数人告诉我这样做的方式是在我的代码中使用一个丑陋的goto.
现在,如果我创建一堆本地堆栈(我认为这就是它们被称为,如果不是,我的意思是只使用常规变量而不使用新命令)我的循环中的变量和我的程序命中一个if语句触发goto,我会遇到内存泄漏,因为我的程序不正确地退出许多循环并且没有清理局部变量?
Rob*_*ino 20
不,你不会导致内存泄漏.使用a goto不是"不正确地退出循环".这只是一般不建议从代码结构点的视图.
除此之外,当您离开循环时,局部变量将超出范围并在过程中从堆栈弹出(即清理).
堆栈变量(autos,而不是autobots)不像通过new()或malloc()分配的变量那样"泄漏".
至于那些只是教条的"丑陋".阅读Knuth,他和Dijkstra一样出色.http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf避免面食编程,但小心使用不会降低意大利面.
Dijkstra不喜欢它们,因为你可以用其他结构化编程技术完成你可以用gotos做的大部分工作,并且使用更少的代码,因此使得其他结构更不容易出错.
明白不应该是你的第一个解决方案,并且不要忘记使用它们,但如果它有意义,不要服从教条式的怪物小怪.破坏声明只是伪装的一种转向,专为严格遵守"你不应该使用"的诫命没有意义的情况而设计.
| 归档时间: |
|
| 查看次数: |
2336 次 |
| 最近记录: |