1EXPORTDLL_API double* Window_FunHamming2(int N)
 2{
 3	//非托管内存释放
 4	//方法1:C中malloc分配,free释放,需引用cstdlib
 5	//方法2:C++中new分配内存,delete释放
 6	//方法3:在COM中CoTaskMemAlloc分配内存,CoTaskMemFree释放
 7	// 需引用combaseapi.h
 8	//C++中new和malloc分配的内存,仅能从非托管堆上释放(dll提供释放函数)
 9	// 
10	//double* w = (double*)malloc(N * sizeof(double));  //malloc free释放
11	//double* w = new double[N];
12	double* w = (double*)CoTaskMemAlloc(N * sizeof(double));
13	FunHamming(w, N);
14	return w;
15}
1     IntPtr w_ptr = Window_FunHamming2(length);
2
3                    double[] w = new double[length];
4                    double[] w2 = new double[length];
5                    Marshal.Copy(w_ptr, w, 0, length);
6                   
7                    //Marshal.FreeHGlobal(w_ptr); 
8                    Marshal.FreeCoTaskMem(w_ptr);  //C++中应与CoTaskMemAlloc配合使用
9                    Marshal.Copy(w_ptr, w2, 0, length);