>>分配内存是不是在主程序分配的?
>>调用DLL和DLL程序中要不要对PCHAR重新分配内存?
一个DLLs拥有自己的数据段(DS),因而它声明的任何变量都为自己所私有。调用它的模块不能直接使用它定义的变量。要使用必须通过过程或函数界面才能完成。而对DLLs来说,它永远都没有机会使用调用它的模块中声明的变量。
一个DLLs没有自己的堆栈段(SS),它使用调用它的应用程序的堆栈。因此在DLL中的过程、函数绝对不要假定DS = SS。一些语言在小模式编译下有这种假设,但使用Delphi可以避免这种情况。Delphi绝不会产生假定DS = SS的代码,Delphi的任何运行时间库过程/函数也都不作这种假定。需注意的是如果读者想嵌入汇编语言代码,绝不要使SS和DS登录同一个值。
主程序的变量(包括全局变量),DLL是不能共享的,
但变量可以通过外部过程映入(Exports).
如果一定要主程序与DLL间共享变量,需要使用内存映射
(Memory ???)
另外,希望你给我加分(即使一分也好,我想留个纪念
毕竟,我打了非常多的字)