gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:04:04 29 4
gpt4 key购买 nike

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

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

最佳答案

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

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

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

关于c# - 如何释放 C++ WinRT 值结构的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35781419/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com