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

How to free memory of c++ WinRT value structs

我是否必须以及如何从已返回到托管 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;

我是释放内存的新手,不知道如何以及何时释放它。 任何人?

playerdata 结构在堆栈上创建; 'new' 未被调用。它不是在堆上创建的,因此没有需要释放的内存。

当一个 value struct 被分配给另一个变量时,它的成员被 copied,这样两个变量都有自己的副本数据(参见 Value classes and structs (C++/CX))。当从函数返回值结构时,同样的规则适用。

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

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