繁体   English   中英

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

[英]About Memory Management When mentioning C++

当有人提到C ++能够执行的内存管理时 ,我怎么看这东西? 从理论上讲,这就像猜测吗?
我参加了逻辑设计入门课程,它涵盖了数字布尔代数组合逻辑的系统 ,这对您有帮助吗?
如此说来,在Visual Studio中 ,是否存在某种可视化内存的工具,我希望这里不要荒谬吗?


谢谢。

C ++具有各种内存区域:

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

堆很重要,因为它支持对任意数量的内存的运行时请求,并且使用一直持续到显式使用deletefree为止,而不是与每个堆栈内存的特定函数调用的生存期绑定在一起。

我不知道有什么有用的工具可以对正在运行的C ++程序的整体内存使用情况进行可视化和分类,更不用说将其与源代码中的指针当前具有多少内存相关联了。 作为一个非常通用的准则,建议以这样一种方式编写代码:仅在程序准备将指针指向某物时才引入指针,而当它们不再指向某物时它们就会超出范围。 如果这不切实际,则将它们设置为NULL (0)可能会很有用,这样,如果您在调试器中监视正在执行的程序,则可以告诉您指针并非指向该点的合法数据。

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

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

在Visual Studio中,有一个内存窗口(Alt + 6),您可以在调试过程中手动读取/写入内存,前提是它是您要执行的操作的有效内存位置。

在Windows平台上,您可以使用诸如perfmon.exe,taskmgr.exe之类的工具以及sysinternals的许多其他工具来初步了解内存管理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM