【发布时间】:2015-09-05 22:14:09
【问题描述】:
在任务管理器的帮助下进行了一些测试后,我了解了关于gcnew 的一件事——即使控制离开函数,为局部变量分配的内存仍然分配,并且只有当控制重新进入这个函数时才会重新分配——所以我'我很困惑,如何自己释放内存。这是问题的一些示例:
void Foo(void)
{
System::Text::StringBuilder ^ t = gcnew System::Text::StringBuilder("");
int i = 0;
while(++i < 20000000) t->Append(i);
return;
}
正如我所提到的,变量t 的内存在离开Foo() 后仍然存在,delete 无法正常工作,因为它适用于new,并且调用Foo() 一次,只会给我分配的内存毫无意义。
【问题讨论】:
-
当初为什么要动态分配?
-
你到底为什么要使用托管 C++?这就像吃不加糖的蛋糕。
-
分配给具有垃圾收集系统的进程的内存仅受其性能和良好公民目标的限制。您应该期望它不会不必要地填满您的硬盘。
-
@TomBlodget,但我不需要这个内存,因为这个函数永远不会被调用
-
@DavidHaim C++/CLI 主要用于 C++ 和 .NET 之间的互操作,尝试使用普通 C++ 来实现 - 这就像吃蛋糕加盐 ;-)