将指针传递给 DLL 提供的 API
Passing pointers to APIs provided by DLL
做完之后我开始怀疑了
我创建了一个 DLL,其中 API 接受指向来自应用程序的某些值的指针。我能够访问 DLL 中的那些指针。
所以我怀疑如何为 DLL 中存在的函数分配内存并从应用程序中调用。它应该出现在调用进程内存中space。
我说的对吗?
你是对的:DLL 和应用程序共享相同的地址 space,因此在系统级别,分配的内存使用没有问题。
但是你必须小心内存的释放,它是由另一个模块的代码分配的。只有在以下情况下它才能正常工作:
- 两个模块都建立在同一平台上(例如 Visual C++)。
- 两个模块使用来自第三个共享 DLL(例如 msvcrt)的相同堆管理器。
做完之后我开始怀疑了
我创建了一个 DLL,其中 API 接受指向来自应用程序的某些值的指针。我能够访问 DLL 中的那些指针。
所以我怀疑如何为 DLL 中存在的函数分配内存并从应用程序中调用。它应该出现在调用进程内存中space。 我说的对吗?
你是对的:DLL 和应用程序共享相同的地址 space,因此在系统级别,分配的内存使用没有问题。
但是你必须小心内存的释放,它是由另一个模块的代码分配的。只有在以下情况下它才能正常工作:
- 两个模块都建立在同一平台上(例如 Visual C++)。
- 两个模块使用来自第三个共享 DLL(例如 msvcrt)的相同堆管理器。