Phi*_*hil 8 .net c# c++ garbage-collection memory-management
我喜欢C#,因为.NET框架的强大功能使得它很容易为Windows开发.但是我也喜欢标准的C++,主要是因为它让我对内存管理进行了微调.有没有办法让两全其美?是否有可以与.NET框架中丰富的库集竞争的C++库?或者有没有办法手动释放我从未使用过的.NET语言中的内存?或者是否可以在标准C++应用程序中使用.NET dll?我知道,我真的在这里伸展,但我相信魔法.
如果您确实想要显式访问指针等(来自 MSDN),您还可以在 C# 中“固定”代码段:
unsafe static void TestMethod()
{
// assume class Point { public int x, y; }
// pt is a managed variable, subject to garbage collection.
Point pt = new Point();
// Using fixed allows the address of pt members to be
// taken, and "pins" pt so it isn't relocated.
fixed (int* p = &pt.x)
{
*p = 1;
}
}
Run Code Online (Sandbox Code Playgroud)
但实际上,我认为你最好确定为什么要自己管理内存——我现在认识的大多数开发人员宁愿专注于系统的实际设计和构建,而不是担心释放内存块。这里还有其他好的建议,例如 Boost(尽管说实话,如果你有木箱鼓来宣布你比 GC 更好,你可能已经知道 Boost)、Qt 和 .NET 桥接(见鬼,如果您愿意,您可以将 CLR 托管在非托管进程中),但我怀疑,对于实际上需要您自己管理内存的少数地方,您最好将它们限制为由 VC++ 项目引用的项目。解决方案的其余部分。