我用VC6.0写的基于MFC常规的dll,给C#的进程调用。 在dll中用malloc方式分配的内存,dll自己释放。但当分配的内存大小超过四五百M时,exe调用就报内存非法访问异常。不好意思,剩余分数不多了。

解决方案 »

  1.   

    应该有限制,malloc的分配机制可以看看
      

  2.   

    exe申请内存好像是2G吧,应该没有超过2G。
      

  3.   

    你的机器内存是多少?
    malloc一次分配的是连续的内存块,你的机器没有连续400MB的可用内存,就分配失败了。
    最好不要一次分配这么多内存。
      

  4.   

    机器内存4G,加上虚拟内存有8G。 只是调试DLL的时候分配六七百M都没有问题,不过exe调用的时候就不够了。可能exe也占用了部分内存,但远没达到2G啊。