我有个程序在大量的多线程运行时,如果用了动态数组就会报内存错误,用静态数组就没事。
动态数组和静态数组在内存的分配上有什么区别吗?
多线程在动态分配内存上是不是有些要注意的地方?
没多少分·· 各位有经验的一起帮忙研究一下吧。

解决方案 »

  1.   

    静态数组定义的时候就会分配空间了,动态数组用setLength分配空间,如果没有特别用途还是用静态数组吧
      

  2.   

    动态数组setlength(0)就好了吧
      

  3.   

    你自己的同步工作没做到位而已,不要有问题都往别的地方赖不在自己身上找原因
    当初borland做的memory manager虽然烂,据说多线程的时候效率很差,但出问题还没听说过
      

  4.   

    其实你用动态数组,还不如直接用LIST,LIST本身就是个无类型指针数组, 他已经为做好了内存管理
    上边有说GETMEM分配内存,如果多次分配,内存地址不是连续的, 多次分配保持地址分配一般用ReallocMem
    函数,
    详细你可以看VCL 里LIST的源码
      

  5.   

    用前用getmem分配内存,而用后要用freemem释放内存
      

  6.   

    后来发现了,局部声明的动态数组,使用了setlength分配内存以后,大家记得赋值nil,否则有内存泄露。freemen之类的函数我试了N个都没用的。
    一人一分吧,别浪费了