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

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

我宣布了结构

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

喜欢

 auto playerdata = PlayerData(); playerdata.Name = ref new String("Bla"); return playerdata; 

我是新的释放记忆,并没有弄清楚如何以及何时释放这个。 任何人?

值struct分配给另一个变量时,会复制其成员,以便两个变量都有自己的数据副本(请参阅值类和结构(C ++ / CX) )。 从函数返回值结构时,适用相同的规则。

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

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

在堆栈上创建了playerdata结构; 没有叫’新’。 它不是在堆上创建的,因此没有需要释放的内存。