OPC程序开发内存管理说明 点击:915 | 回复:2



opcfan

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:62帖 | 58回
  • 年度积分:0
  • 历史总积分:667
  • 注册:2004年9月29日
发表于:2007-03-03 16:56:00
楼主
在OPC服务器里有3种需要分配和管理的内存类型:局部内存、作为“out”参数返回给客户端程序的全局内存和BSTR内存。我们必须正确分配内存和释放内存,需要注意的是:在很多情况下,调用错误的释放某个特定内存块的函数并不产生易见的错误,但是因为没有释放内存而产生内存泄露,随着时间的累加,而最终系统崩溃。
1、 局部内存
局部内存在一个函数内部使用,除此之外,只要指向它们的指针不传递给外部的任务或者DLL也能在一个对象内部分配。这种类型的内存能被分配和释放使用以下2种技术。
Malloc/free:这个在C语言里使用。
New/delete:推荐的方式。如果我们要分配一个数据可以使用new这种方式,一定要记得使用“delete []”语句释放内存。
虽然这两种工作技术都可以工作,但是你不能分配用一种方法分配一块内存块,用另外一种方法释放内存。
2、 全局内存
全局变量是由被调用的方法分配然后以“out”参数的方式传递给调用者(除了BSTR),内存由调用者释放。也有两种技术来管理这种类型。
CoTaskMemAlloc/CoTaskMemFree: 比较容易的方法。
     CoGetMalloc:比较有效率的方法。
     这两种方法可以交换使用,也就是说用CoTaskMemAlloc分配内存,可以CoGetMalloc来释放内存。
3、 字符内存
字符内存用BSTRs。用SysString…类型的函数分配内存,用SysFreeString释放内存。如果客户端释放从服务器返回的BSTR的内存,一定是使用SysFreeString.



dotnew

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 185回
  • 年度积分:0
  • 历史总积分:447
  • 注册:2007年3月08日
发表于:2007-09-20 14:36:00
1楼
顶着学习

seaday

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 48回
  • 年度积分:0
  • 历史总积分:163
  • 注册:2004年10月06日
发表于:2007-09-24 08:07:00
2楼
先顶下

热门招聘
相关主题

官方公众号

智造工程师