c# - 是否有 CPU 模拟器或一种方法来查看事物是如何在内存中创建和销毁的

标签 c# .net memory memory-management

好吧,这道题不完全是一道编程题,但这才是真正能让编程变得更实用、更容易实现的问题。

这个问题是因为每次我写 int c=10;MyClass objMyClass=new MyClass(); 我想看看内存中的位置该值已创建(尽管我们现在可以将地址视为十六进制值)。

我们能看到(当我们声明一个变量时)它在内存中的创建位置吗?在哪个状态下,即:C#->IL->Machine Language,是内存中存在的变量。现在不同的事件和函数如何更新它的值。这就像我的 CPU 模拟器。

我问这个问题是因为这个问题在脑海中浮现了很长时间?每当我了解一个新概念时,本能 react 就是,好吧,它在内存中看起来如何。

最佳答案

如果将 SOS.dll(或 PSSCOR2.dll)扩展加载到 WinDbg 甚至 Visual Studio 中,您可以看到所有这些以及更多信息。

SOS 是 .NET 框架的一部分,它基本上将 WinDbg 等 native 调试器转变为“托管代码感知”调试器。

SOS 具有可让您检查托管堆、对象及其引用等的命令。

有关详细信息,请参阅 Tess' excellent blog .

有关如何使用 SOS 的另一个示例,请参阅 this question .

关于c# - 是否有 CPU 模拟器或一种方法来查看事物是如何在内存中创建和销毁的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3555134/

相关文章:

javascript - C# 相当于 LZMA-JS 压缩

c# - 如何将图像 byte[] 数组压缩为 JPEG/PNG 并返回 ImageSource 对象

.net - cs 项目文件和 nuspec 文件的 future

c# - 将属性应用于分部类

c - 理解内存中的乱码(C)

c++ - 数据成员/代码指针偏移量

c# - 如何生成 Task<Task> 以展开

c# - 来自不同语言的自动映射对象

c# - SmtpClient - 什么是正确的生命周期?

c - 32 位架构 (GCC) 上的 8 位 int 与 32 位 int