1 .net c++ syntax memory-leaks managed-c++
我正在处理我的应用程序中的内存泄漏问题.我将其缩小为旧语法以声明'Single'类型.使用声明创建了一个测试应用程序,它在吃掉大量内存后崩溃了.我错过了什么?
测试代码在这里:
#include "stdafx.h"
using namespace System;
int main()
{
while(1)
{
System::Single * sngTemp = new System::Single(0.0);
//System::String ^sngTemp = gcnew System::String(S"dsfasdfasdf");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这不是"旧语法"与"新语法"问题--C++/CLI具有相同的行为.System::Single
是别名float
,可以在堆栈,非托管堆或托管堆上分配.
在这里,因为你正在使用未修饰的new
,你在非托管堆上分配一个,即完全相同:
float* sngTemp = new float(0.0);
Run Code Online (Sandbox Code Playgroud)
为什么不期望这个泄漏?如果要进行垃圾回收,请使用托管分配
(__gc new
旧语法); 或者更好的是,根本不在堆上分配值类型,使其成为无问题.
归档时间: |
|
查看次数: |
196 次 |
最近记录: |