我现在需要处理一组很大的数据,在数据的处理过程中需要申请一些临时的内存来存储这些数据,而C语言可以用malloc()函数来申请这些内存空间:
double *temp_r,*temp_a,*temp_i; temp_r=(double *)malloc(Column*sizeof(double)); temp_a=(double *)malloc(Row*Column*sizeof(double)); temp_i=(double *)malloc(Column*sizeof(double));
          ...........
          free(temp_r);
          free(temp_i);
return temp_a;
请问在C#里面怎么来动态申请内存空间,用于存储运算过程的中间数据,并在最后释放这些空间呢?

解决方案 »

  1.   

    new关键字:
    double[] data = new double[100000];
    List<double> data = new List<double>(); 后者可以适应动态变化长度的数据。内存本身是CLR管理的,不需要你释放。
      

  2.   

    如果对象实现了Idisponse接口,可以用using关键字自动释放资源。如果对象很大,先new出来对象,用完了赋值为null,然后GC.Collect手工清理一下垃圾。
      

  3.   

    c#不需要自己管理内存,动态内存可以使用List来存放,自动在不够的时候扩容,管理起来很方便,这是C#比C++等早期语言的优势之处,当然,正因为如此,C#中使用指针将非常不变,因为内存不是自己管理了,自然要用指针访问别人管理的内存是不可以的,要通过特殊方法将内存地址固定,功能上还限制很多。
      

  4.   

    new估计就是吧,其他就不会了