问题标签 [tracking-reference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
150 浏览

.net - 为什么我的跟踪参考没有更新?

我创建了一个简洁的小函数来删除一个 ienumerable 及其内容(以填补我最近发现的内存泄漏):

DeleteEnumerable...但是由于某种原因,当我使用调试器进行跟踪时,当我从函数返回时,列表似乎仍然指向一些内存。

我认为通过作为跟踪参考传入它应该修改我传入的句柄?我在这里错过了什么?


编辑:一个更彻底的测试示例......

这是一个稍微更新的处理程序:

这是调用处理器的代码的精简示例:

...这是输出:

老实说,我并不担心删除可枚举的作品是否是其中包含的需要被杀死的对象。我们到处使用这些列表,但我们的系统内存不足,因为它们没有被足够快地清理干净。

更糟糕的是,我们依赖该DeleteEnumerable函数将列表跟踪引用设置为 nullptr,但是当它们被传回时,跟踪引用似乎没有更新。从控制台输出中可以看出,这不仅仅是调试器问题。

我不明白的是为什么

0 投票
2 回答
544 浏览

c++-cli - 为什么不能将跟踪引用用作类成员?

以下代码:

在 Visual Studio 中产生以下错误:

错误 C3160:“int %”:托管类的数据成员不能具有此类型

我认为跟踪引用是一个托管的东西 - 那么为什么它们不能成为托管类的成员呢?另外:如何正确存储对 C++/CLI 中值类型的引用?

0 投票
2 回答
793 浏览

c# - 如何调用重载的 c# 函数,唯一的区别是在 c++/cli 中是否通过 ref 传递参数

我有一个带有重载方法的 C# 类库,一个方法有一个 ref 参数,另一个有一个 value 参数。我可以在 C# 中调用这些方法,但在 C++/CLI 中无法正确调用。似乎编译器无法区分这两种方法。

这是我的 C# 代码

和我的 C++/CLI 代码

我知道在 C++ 中我不能声明重载函数,其中函数签名的唯一区别是一个接受一个对象,另一个接受一个对象的引用,但在 C# 中我可以。

这是 C# 支持但 C++/CLI 不支持的功能吗?有什么解决方法吗?

0 投票
1 回答
51 浏览

.net - 为什么跟踪引用不给被引用的对象赋值?

我不明白为什么当传递的变量在堆上时跟踪引用没有完成它的工作。这是代码:

第一个TryParseExact调用使用本地初始化变量timeOnStack来放置解析的 DateTime 值按预期工作并正确设置解析日期:调用timeOnStack.ToString ()返回"1/4/2016 1:25:00 PM" 而第二个调用即使返回true它也没有设置正确的值dc->Time:调用dc->Time.ToString ()返回"1/1/0001 12:00:00 AM"

我在这里没有看到什么?

0 投票
0 回答
77 浏览

c++-cli - c++ cli 跟踪引用错误

我似乎无法理解尝试在我的代码中定义跟踪引用时遇到的以下错误

函数签名是:

我的编译错误是:

在此处输入图像描述

(抱歉屏幕截图。SOF 不能很好地处理错误字符串中的 <> 字符)

如果我从签名中删除跟踪参考(删除“%”字符),它会很好地工作。

有任何想法吗?