C# 如何释放c+的内存+;WinRT值结构

C# 如何释放c+的内存+;WinRT值结构,c#,windows-runtime,c++-cx,winrt-component,C#,Windows Runtime,C++ Cx,Winrt Component,我是否必须以及如何从Windows运行时组件中创建的已返回托管C#项目的值结构中释放内存 我声明了结构 // Custom struct public value struct PlayerData { Platform::String^ Name; int Number; double ScoringAverage; }; 像 我是一个刚开始释放内存的人,不知道如何以及何时释放它。 有人吗 在堆栈上创建playerdata结构;'“新”没有被称为“新”。它不是在堆上创

我是否必须以及如何从Windows运行时组件中创建的已返回托管C#项目的值结构中释放内存

我声明了结构

// Custom struct
public value struct PlayerData
{
    Platform::String^ Name;
    int Number;
    double ScoringAverage;
};

我是一个刚开始释放内存的人,不知道如何以及何时释放它。
有人吗

在堆栈上创建playerdata结构;'“新”没有被称为“新”。它不是在堆上创建的,因此没有需要释放的内存。

当一个值结构被分配给另一个变量时,它的成员被复制,因此两个变量都有自己的数据副本(请参阅)。从函数返回值结构时,同样的规则也适用

在代码中有
playerdata
,一个类型为
playerdata
的对象,具有自动存储持续时间。
return
语句复制
playerdata
(包括
Platform::String^
成员),并将此副本返回给调用者。之后,
playerdata
将超出范围,并自动销毁


换句话说:您发布的代码按预期工作。您不必显式释放任何内存。

@πάνταῥεῖ 仅供参考,WinRT=[c++-cx],而不是[c++-cli]@Lucastrezesniewski很抱歉弄错了。您对如何从跨越windows运行时组件和C#项目边界的对象中释放内存有何评论?(就像我的PlayerData一样)不用担心,我只是向另一位编辑指出,他添加了错误的标签。我本人没有WinRT方面的经验,只是因为C++/CLI标记才看到了您的问题,所以我恐怕帮不了您。andy,非常感谢您的回答,非常清楚。但事实证明,我需要类而不是结构,才能将它们从运行时组件转移到我的c#项目中。我是否需要释放我在返回c#项目的运行时组件中创建的内存(类)?比如:@Toinedb:如果你还有问题,你应该点击按钮。好的,我会的。再次感谢
auto playerdata = PlayerData();
playerdata.Name = ref new String("Bla");
return playerdata;