gSOAP中内存的使用
日期:2007年9月6日 作者: 查看:[大字体 中字体 小字体]-
一.概述 2
二.例子程序简要说明 2
三.server端 2
四.client端 3
五.Valgrind的使用 3
六.参考文档 4
七.备注 4
一.概述
在gSOAP的server和client端连接中,内存的处理有些是gSOAP自己处理的,有些需要我们来考虑。本文档主要就其中目前可能遇到的内存问题,做一个简要的介绍及说明。另外,简要介绍了一下内存检测工具valgirnd的使用及注意事项。
二.例子程序简要说明
例子程序实现的是client端传入一个参数num,server端返回一个字符串,是一段不知道多长的buffer,这样需要在server端动态分配空间。这段内存的管理是本文主要讨论的问题。例子的实现可能有些冗余,但是为了说明一些问题,所以做了一些多余的实现。
得到的server端名称为getmsgserver,client端名称为getmsgtest,server启动在8888端口。
三.server端
省略server端的main函数,其功能实现函数如下:
int ns__getmsg(strUCt soap *getmsg_soap, int num, char **msg)
{
//下面这个空间为我们自己分配的空间,所以后来需要用free显式释放,在xmail系统中可能是从mss获取到的一段buffer,例子中的1024是随意填写的
char *a=(char*)malloc(1024);
memset(a, 0, 1024);
sprintf(a, "num=%d\n",num);
//下面这个空间由soap分配,在server端的main函数中由soap_end释放该空间,由soap自己来控制,还可以直接使用*msg = soap_strdup(getmsg_soap, a)实现下面3句话,但是这个函数只适用于char*的拷贝,如果是struct的copy还是使用下面的实现方式
*msg = (char*)soap_malloc(getmsg_soap, 1024);
memset(*msg, 0, 1024);
//将我们的buffer(可能是从mss获取的)拷贝到soap管理的空间中
memcpy(*msg, a, strlen(a));
//释放由我们自己分配的空间
free(a);
return 0;
}
四.client端
client端做了简单的封装,封装后的函数如下:
int getmsg( const char* server, int num, char **msg )
{
struct soap getmsg_soap;
int result = 0;
char *getmsg = NULL;
soap_init(&getmsg_soap);
soap_set_namespaces(&getmsg_soap, getmsg_namespaces);
//下面是从server端获取数据,注意,得到的buffer在调用soap_end后空间就会被释放,所以需要定义变量getmsg,不能直接将参数msg作为此处的最后一个参数。当然,如果是在使用完msg后才调用soap_end,或者不需要将msg传出,此处就可以直接将msg作为最后一个参数。
soap_call_ns__getmsg( &getmsg_soap, server, "", num, &getmsg );
if(getmsg_soap.error)
{
printf("soap error:%d,%s,%s\n", getmsg_soap.error, *soap_faultcode(&getmsg_soap), *soap_faultstring(&getmsg_soap) );
result = getmsg_soap.error;
}
//将从server端得到的buffer转储到msg中 - [1] [2] 下一页
-
- gSOAP中内存的使用 相关文章:
- ·《真?三国无双3》月英使用心得 - 真三国无双4攻略秘籍 - 真三国无双4
- ·2007年结婚吉日黄道吉日通用表
- ·QQ空间开场代码使用说明
- ·我所用的140个XP高级优化技巧!
- ·怎么用虚拟光驱装系统?
- ·用移动硬盘来安装Vista系统
- ·为什么iexplore.exe在打开网页时CPU使用会100%?
- ·局域网常用的DOS查询IP地址命令
- ·我也发个破解(可破解正版中文旗舰版 Windows Vista Ultimate ChnSimp )试用没问题
- ·MSComm控件使用详解
- gSOAP中内存的使用 相关软件
- ·慧视小灵鼠(用鼠标手写输入法)
- ·金山快译 V2007 绿色精简试用版
- ·flv格式转3gp格式专用软件(微视转码工具)
- ·网络还原精灵(网吧专用版) 2006 V3.2.1.0
- ·韩国语实用语法
- ·新万能主板驱动 适用于所有主板
- ·上海市2000年度《职称计算机应用基础考试练习软件》
- ·局域网共享设置梦想吧专用版
- ·实用万年历V3.8
- ·万用网络加速器 V2.0
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:AT&T的汇编格式
下一篇:“笑”傲流媒体―SMIL基础教程
精品推荐
热点TOP10
- ·C语言教程第六章:指针
- ·C/C++笔试、面试题目大汇总
- ·MSComm控件使用详解
- ·学生成绩管理系统实习
- ·Windows下C语言网络编程快速入门
- ·飞机订票系统设计
- ·c#.net连接access操作类
- ·进程调度模拟程序
- ·打字游戏
- ·C#基础概念二十五问
- ·makefile规则
- ·C语言的常用库函数使用方法分析及用途
- ·Windows编程基础 - 概述
- ·c语言中的结构(struct)和联合(union)简介
- ·一个简单的链表程序
- ·GDB 的文档
- ·漫谈C++ Builder多线程编程技术
- ·VC下调用ACM音频编程接口压缩Wave音频
- ·C语言教程第五章:函数
- ·ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
特别推荐
- ·C#基础概念二十五问
- ·利用C#远程存取Access数据库
- ·入门教程:实例详解C++友元
- ·C语言基础教程(三)输入输出函数及控制流程语句
- ·VC下调用ACM音频编程接口压缩Wave音频
- ·如何在C/C++中调用Java
- ·设计的一个计算器类的源代码,很简陋哦,请各位高手不要见笑!
- ·gSOAP中内存的使用
- ·Windows下C语言网络编程快速入门
- ·C语言教程第六章:指针
- ·漫谈C++ Builder多线程编程技术
- ·学生成绩管理系统实习
- ·用C#实现pdf文件的完整性验证
- ·将程序从托管扩展 C++ 迁移到 C++/CLI(1)
- ·链表的c语言实现(六)
- ·C语言库函数 (D类字母)
- ·用AVIFile函数制做AVI文件基本步骤
- ·利用C++实现的贪吃蛇游戏
- ·Windows API-GDI入门基础知识详解(3)
- ·C语言库函数 (C类字母)
