获取 ref 参数的地址

2024-03-20

我的代码如下

class MyClass
{
    static int iField = 42;
    static void Test(ref int arg)
    {
         unsafe
         {
            fixed(void* pField = &iField)
            fixed(void* pArg = &arg)
            {
                Console.WriteLine ("{0},{1}",(int)pArg,(int)pField);
                //output: 165451772,165451772
            }
         }
    }

    static void Main()
    {
        Test(ref iField);
    }
}

我想知道获取 ref 参数的地址是否像上面测试中显示的那样可靠。


据我所知,是的,当你在的时候fixed块,GC不会搬迁arg。一旦出了fixed块变量被取消固定,因此会受到重定位的影响GC.

About a static 结构/类/字段将其地址固定在内存中,答案是否定的。它们和任何其他对象一样会被重新定位。没有保证per se将来不会因为它被标记为而在内存中进行重定位static.

意义static与编译器在编译时所拥有的知识和确定性有关类/结构/字段你有什么。它与内存位置以及它们是否固定等无关。用 Eric Lippert 的话来说:

静态方法之所以被称为“静态”,是因为它总是可以在编译时准确确定将调用什么方法。也就是说,仅通过代码的静态分析就可以解决该方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 ref 参数的地址 的相关文章

  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 在 ASP.NET Core 3.1 中使用包含“System.Web.HttpContext”的旧项目

    我们有一些用 Net Framework编写的遗留项目 应该由由ASP NET Core3 1编写的API项目使用 问题是这些遗留项目正在使用 System Web HttpContext 您知道它不再存在于 net core 中 现在我们
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob

随机推荐

  • 仅隐藏供应商提供的类的弃用警告

    我们有一个应用程序 其中包含一个非常非常古老的类来连接到专有数据库的 API 此代码会生成大量弃用错误 然后将其记录下来 从而污染我们的日志文件 我们只想基本上忽略此供应商提供的类的弃用错误 但我无法找到执行此操作的最佳方法 我见过的选项
  • Bootstrap:两列居中

    我正在尝试使用 Bootstrap 3 1 实现两列居中布局 我读过这个 如何将 Bootstrap div 与 spanX 类居中 https stackoverflow com questions 9554724 how do i ce
  • 使用 Java 从 Keystore 中导入的证书获取公钥

    我已经创建并下载了证书销售队伍 https ap1 salesforce com 按照中的说明PicketLink 文档 https docs jboss org author display PLINK Picketlink as SP
  • 多租户:每个租户都有单独的数据库

    我们正在开发一个多租户应用程序 在架构方面 我们设计了共享中间层用于业务逻辑 每个租户一个数据库用于数据持久化 也就是说 业务层将为每个租户与数据库服务器建立一组连接 连接池 这意味着应用程序为每个租户维护单独的连接池 如果我们预计大约有
  • Android 画图 PorterDuff.Mode.CLEAR

    我正在开发在 Canvas 上绘图的应用程序 类似于 Android SDK 中的 Finger Paint 演示 我的问题是当我使用时PorterDuff Mode CLEAR 当绘图和画布时 如果我尝试擦除某些内容 它工作正常 但如果我
  • 声明参数化类型同义词的实例

    我有很多适用于向量的函数 即具有类型强制长度的列表 我试图让我的类型更容易编写 即而不是编写 foo Fold Integer v Map Integer Integer v v gt 我正在宣布一个新班级NList所以我可以写foo NL
  • Hibernate JPA 与 JTA 和 Glassfish 应用程序服务器似乎没有提交

    我是 hibernate 的新手 我希望它通过 JNDI 使用来自应用程序服务器的数据库连接 奇怪的是 它在数据库中创建我的表 但不保存实体 看来 它并没有承诺 有人在使用 hibernate 时遇到过类似的问题吗 这是一个小测试 serv
  • 如何将参数传递给graphql查询?

    我正在尝试在 Meteor blaze 项目中使用 Apollo graphql 我正在使用来自swydo blaze apollo 使用graphql查询从mongoDB获取数据就可以了 Using this one can get da
  • 使用 React Router V4 以编程方式导航

    我刚刚更换了react router从 v3 到 v4 但我不确定如何以编程方式在成员函数中导航Component 即在handleClick 我想要导航到的功能 path some where处理一些数据后 我曾经这样做过 import
  • 将 android studio 更新为花栗鼠后,导航组件方向生成的类中的构建时间错误

    在导航组件生成的所有 方向 类中将 android studio 更新为花栗鼠版本后 我收到 未解析的参考 R 构建时间错误 R 类未在该类中导入 尽管我可以手动导入它 但类将重新生成 而无需在下一个构建中导入 android gradle
  • Pytorch 分析器显示两个不同网络的卷积平均执行时间不同

    我有两个网络 我正在对它们进行分析以查看哪些操作占用了大部分时间 我注意到CUDA time avg为了aten conv2d不同网络的操作有所不同 这也增加了一个数量级 在我的第一个网络中 它是22us 而对于第二个网络则是3ms 我的第
  • 内蒂不写

    当尝试使用 netty 写入时 写入的数据永远不会在远程端结束 这已通过 Wireshark 确认 我努力了 Directly using writeAndFlush channel writeAndFlush new Packet Man
  • iOS,无法识别的选择器发送到实例?

    我有一个带有导入的自定义操作栏的主屏幕 我在单独的 xib 文件中创建了这个 actionBar 其中包含 m 和 h 文件 我在我的actionBar m中做了一些图形设置viewDidLoad like backgroundColor和
  • Swift 中可选的动态属性

    我正在尝试编译以下 Swift 类 class Waypoint NSObject dynamic var coordinate CLLocationCoordinate2D 但我收到以下编译器错误 属性无法标记为动态 因为其类型无法在 O
  • Excel VBA - 如何仅插入值?

    我正在寻找一种从其他工作簿复制范围 复制范围存在于 11 列和各种行 的方法 并仅在我的主工作簿中现有数据的下方插入 粘贴值 只是粘贴没有问题 但因为我不希望它覆盖最后一个 SUM 行 所以我想插入这些值 据我所知 没有像 InsertSp
  • 为什么在编程中使用常量? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从命令行提供当前目录

    有人可以给我一个提示 如何使用 ruby 从命令行提供当前目录吗 如果我可以有一些系统范围的配置 例如 mime 类型 并简单地从每个目录启动它 那就太好了 最简单的方法 谢谢亚伦 帕特森 https twitter com tenderl
  • Firefox 不显示网站图标

    Locked 有对该问题内容的争议 help locked posts此时正在解决 目前不接受新的答案或互动 I DO知道这个问题仅在这个网站上就被问了至少一千次 但我已经阅读了其中的许多主题 我确实认为自己知识渊博 很少问任何事情 而是更
  • 使用 R 和 ggplot 将 y 轴调整为 2x2 ANOVA 条形图时出现问题 [重复]

    这个问题在这里已经有答案了 我不是 Pro R 用户 但我已经尝试了多种方法 但找不到问题的解决方案 我根据此网站创建了 2x2 方差分析的条形图 包括误差线 APA 主题和自定义颜色 https sakaluk wordpress com
  • 获取 ref 参数的地址

    我的代码如下 class MyClass static int iField 42 static void Test ref int arg unsafe fixed void pField iField fixed void pArg a