当有人提到内存管理 c ++ 能够做到的时候,我怎么能看到这个呢?这在理论上就像猜测一样吗?
我参加了逻辑设计介绍课程,它涵盖了数字系统和布尔代数和组合逻辑,将这个帮助?
所以在 Visual Studio 中说,是否有某种可视化内存的工具,我希望我在这里不是很荒谬?
答案 0 :(得分:3)
C ++有各种各样的内存区域:
new
或new[]
(C ++的首选方法)或malloc
(从C继承的低级函数)分配的“堆”内存,并随{{1}一起发布分别是},delete
或delete[]
。堆很重要,因为它支持对任意数量内存的运行时请求,并且在明确使用free
或delete
之前一直持续使用,而不是与特定生命周期相关联函数调用按堆栈内存。
我不知道有任何有用的工具可视化和分类正在运行的C ++程序的整体内存使用情况,更不用说将源代码中的哪些指针当前与它们关联的内存相关联。作为一个非常通用的指南,我们鼓励编写代码,使得只有在程序准备好指向某些东西时引入指针,并且当指针不再指向某些东西时它们会超出范围。如果这是不切实际的,将它们设置为free
(0)会很有用,这样如果你在监视器中监视正在执行的程序,你可以告诉指针并不意味着指向那里的合法数据点。
答案 1 :(得分:0)
Memory management不是您在编程时可以轻松想象的东西。相反,它指的是程序在运行时如何分配和释放内存。许多调试器将提供一种在程序运行时暂停程序的方法,并查看有关已分配的动态内存的信息。您可以使用适当的内存管理技术来规划类和接口,但这并不像“点击此按钮获取内存使用情况”一样简单。
您还可以实现this之类的内容来跟踪您的内存分配,并警告您程序没有释放的任何内容。垃圾收集器可以让您摆脱与内存管理相关的一些麻烦。
答案 2 :(得分:0)
在Visual Studio中,有一个内存窗口(Alt + 6)可让您手动读/写内存,前提是它在调试期间是您尝试进行的操作的有效内存位置。
在Windows平台上,您可以使用诸如perfmon.exe,taskmgr.exe和sysinternals
中的许多其他工具之类的工具获得内存管理的初步感受。