当前位置: 首页 > news >正文

深圳培训网站建设上海建设网站浦东新区污水管网工程

深圳培训网站建设,上海建设网站浦东新区污水管网工程,如何生成自己的小程序,怎么下载app到手机上linux一个进程只有一个堆,不要考虑这些问题,但是windows一个进程可能有多个堆,要在对应的堆上释放。 一, MT改MD 一个进程的地址空间是由一个可执行模块和多个DLL模块构成的,这些模块中,有些可能会链接到…

linux一个进程只有一个堆,不要考虑这些问题,但是windows一个进程可能有多个堆,要在对应的堆上释放。

一, MT改MD

一个进程的地址空间是由一个可执行模块和多个DLL模块构成的,这些模块中,有些可能会链接到C/C++运行库的静态版本,有些可能会链接到C/C++运行库的DLL版本。当使用运行库的DLL版本时,由于dll加载到进程中只会在地址空间中存有一份,因此共用的是同一个堆。所以将可执行模块和DLL模块统一修改为MD编译,则可以直接实现跨模块之间的内存申请和释放,而不会存在任何问题。

二, DLL提供释放接口

每个模块自己封装好释放对应内存的接口,分配资源的接口和释放资源的接口成对封装吧,然后外部模块调用就好了。

三, 使用主进程堆申请和释放内存

如果非要A模块申请的内存,B模块来释放,并且A模块还没有对应的接口,那就大家都使用一个堆就好了,申请和释放都用GetProcessHeap()指定好使用主进程堆。
DLL:


```cpp
void* __stdcall Test(int *len)
{void* pData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 100);if (pData == NULL)return NULL;//使用的是HEAP_ZERO_MEMORY,会自动把内存块的内容都清零//下面这行代码可以不要的memset(pData, 0, 100);char pBuf[] = "十点十分十分十分";memcpy(pData, pBuf, sizeof(pBuf));*len = 100;return pData;
}

可执行程序:

int main()
{HMODULE hLib = LoadLibraryA("Dll1.dll");if (nullptr == hLib){std::cout << "LoadLibraryA fail, error:" << GetLastError() << std::endl;return 0;}Fun fun = (Fun)GetProcAddress(hLib, "Test");if (nullptr == fun){std::cout << "GetProcAddress fail, error:" << GetLastError() << std::endl;return 0;}int nLen = 0;char *pData = (char*)fun(&nLen);std::string strTemp(pData, nLen);HeapFree(GetProcessHeap(), 0, pData);std::cout << strTemp << std::endl;return 0;
}

windows允许一个进程中有多个heap,那么这样就需要指明一块内存要在哪个heap上分配,win32的HeapAlloc函数就是这样设计的,给出一个heap的句柄,给出一个size,然后返回一个指针。每个进程都至少有一个主heap,可以通过GetProcessHeap来获得,其它的堆,可以通过GetProcessHeaps取到。同样,内存释放的时候通过HeapFree来完成,还是需要指定一个堆。

http://www.yayakq.cn/news/615362/

相关文章:

  • 自己做网站 有名软件属于网站开发吗
  • 企业做网站有什么好处龙岩建设局升降机网站
  • 网站模板源代码下载软件跟网站开发的区别
  • 广州网站建设 推广公司wordpress会员查看发布插件
  • 桐乡网站开发营销最好的方法
  • 文化公司做网站交文化事业费吗2019银川住房建设规划信息网站
  • 网站建设开发报价单项城网站建设
  • 深圳网站建设费用多少重庆建站免费模板
  • 中山百度网站推广ps上怎么做网站轮播图
  • 便利店网站建设拓扑图黑龙江建设安全监督网查询
  • 网站首页效果图怎么设计如何申请免费的网站
  • 个人免费推广网站做公司网站公司多少钱
  • 网页设制作与网站建设宝典 pdf电子商城网站源码
  • 网站制作沈阳重庆城乡建设部网站首页
  • 重庆北碚网站制作小程序游戏排名
  • 深圳光明专业网站设计保定网站建设解决方案
  • 响应式网站用什么工具大学生网页设计主题
  • 网站名称推荐商城网站建设的优点
  • 卖掉的网站了对方用来做违法南部 网站 建设
  • 楼盘销售管理网站开发资源最好网站建设公司排名
  • 淘宝客网站一定要备案吗找家装修公司家装
  • 张店网站建设方案淘城汇网站谁做的
  • 网站用户黏度seo网站推广
  • 大型门户网站核心技术加盟型网站
  • 自己怎么免费做网站网页直接采用模板网站有什么缺点
  • 增加访客的网站自助建站系统有什么好处
  • 做优惠券网站wordpress theme framework
  • 成都网站建设开发公司两学一做注册网站
  • 大型网站系统国内专门做酒的网站有哪些
  • vs2013网站开发做网站需要域名吗