关于内存管理提到C ++时

时间:2010-12-03 02:09:27

标签: c++ visual-studio

当有人提到内存管理 c ++ 能够做到的时候,我怎么能看到这个呢?这在理论上就像猜测一样吗? 我参加了逻辑设计介绍课程,它涵盖了数字系统布尔代数组合逻辑,将这个帮助?
 所以在 Visual Studio 中说,是否有某种可视化内存的工具,我希望我在这里不是很荒谬?


谢谢。

3 个答案:

答案 0 :(得分:3)

C ++有各种各样的内存区域:

  • 用于全局变量和静态变量的空间,由编译器预先分配
  • “堆栈”内存,用于在函数调用期间保留调用者上下文,传递一些函数参数(其他可能适合CPU寄存器)和局部变量
  • 使用newnew[](C ++的首选方法)或malloc(从C继承的低级函数)分配的“堆”内存,并随{{1}一起发布分别是},deletedelete[]

堆很重要,因为它支持对任意数量内存的运行时请求,并且在明确使用freedelete之前一直持续使用,而不是与特定生命周期相关联函数调用按堆栈内存。

我不知道有任何有用的工具可视化和分类正在运行的C ++程序的整体内存使用情况,更不用说将源代码中的哪些指针当前与它们关联的内存相关联。作为一个非常通用的指南,我们鼓励编写代码,使得只有在程序准备好指向某些东西时引入指针,并且当指针不再指向某些东西时它们会超出范围。如果这是不切实际的,将它们设置为free(0)会很有用,这样如果你在监视器中监视正在执行的程序,你可以告诉指针并不意味着指向那里的合法数据点。

答案 1 :(得分:0)

Memory management不是您在编程时可以轻松想象的东西。相反,它指的是程序在运行时如何分配和释放内存。许多调试器将提供一种在程序运行时暂停程序的方法,并查看有关已分配的动态内存的信息。您可以使用适当的内存管理技术来规划类和接口,但这并不像“点击此按钮获取内存使用情况”一样简单。

您还可以实现this之类的内容来跟踪您的内存分配,并警告您程序没有释放的任何内容。垃圾收集器可以让您摆脱与内存管理相关的一些麻烦。

答案 2 :(得分:0)

在Visual Studio中,有一个内存窗口(Alt + 6)可让您手动读/写内存,前提是它在调试期间是您尝试进行的操作的有效内存位置。

在Windows平台上,您可以使用诸如perfmon.exe,taskmgr.exe和sysinternals

中的许多其他工具之类的工具获得内存管理的初步感受。