亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

gSOAP中內存的使用

2019-11-17 05:14:38
字體:
來源:轉載
供稿:網友

  一.概述 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);
s
//下面這個空間由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中
if(getmsg)
{
*msg = strdup(getmsg);
}
soap_end(&getmsg_soap);
soap_done(&getmsg_soap);
return result;
}

這樣,調用完函數int getmsg( const char* server, int num, char **msg )后,需要釋放最后一個參數的空間,這個與一般的c程序相同。
五.Valgrind的使用
直接在終端鍵入valgrind,然后回車,可以看見一些幫助,以下是幾個常用的選擇項,選項可以聯合使用:
1. 對server端進行非法指針操作檢測:
shell>valgrind ./getmsgserver 8888
在另外一個終端執行
shell>./getmsgtest 89
2. 對server端進行內存泄漏檢測,在main函數的soap_end后面添加一個exit(0),以便觀察server接收一次請求后退出的情況,這樣可以真實查看內存是否完全釋放:
shell>valgrind --leak-check=yes ./getmsgserver 8888
在另外一個終端執行
shell>./getmsgtest 89
3. 對server端進行內存檢測,是否有些內存沒有完全回收:
shell>valgrind –show-reachable=yes./getmsgserver 8888
在另外一個終端執行
shell>./getmsgtest 89
4. 對client端進行非法指針操作檢測:

shell>./getmsgserver 8888
在另外一個終端執行
shell> valgrind ./getmsgtest 89
5. 對client端進行內存泄漏檢測:
shell>./getmsgserver 8888
在另外一個終端執行
shell>valgrind --leak-check=yes ./getmsgtest 89
6. 對client端進行內存檢測,是否有些內存沒有完全回收:
shell>./getmsgserver 8888
在另外一個終端執行
shell> valgrind –show-reachable=yes ./getmsgtest 89
六.參考文檔
1.gSOAP的內存治理
http://www.cs.fsu.edu/~engelen/soapdoc2.Html#tth_sEc9.13

2.Valgrind的主頁
http://valgrind.kde.org/
七.備注
在192.168.18.233的/home/weiqiong/soap/getmsg目錄下有本文講到的例子。用法更復雜的例子參見cvs中的xmail/pmd/ws/addrbook目錄下的實現,是從mss獲取地址本的實現。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一视频在线观看| 国产成人精品久久二区二区91| 国产区亚洲区欧美区| 国产精品伦子伦免费视频| 久久精品国产视频| 亚洲成人精品久久久| 亚洲二区在线播放视频| 欧美xxxx18性欧美| 国产精品青草久久久久福利99| 欧美日韩另类字幕中文| 久久久久久久久91| 精品国产一区久久久| 亚洲欧洲日产国码av系列天堂| 国产97免费视| 久久久国产精品免费| 久久久久日韩精品久久久男男| 欧美午夜xxx| 欧美激情精品久久久久久久变态| 国产盗摄xxxx视频xxx69| 日韩亚洲综合在线| 亚洲女人天堂av| 日本三级韩国三级久久| 亚洲精品福利在线观看| 日韩动漫免费观看电视剧高清| 欧美日韩国产成人高清视频| 亚洲性视频网址| 日韩中文字幕视频| 成年无码av片在线| 国产做受69高潮| 久久久国产成人精品| 欧美日韩在线另类| 亚洲第一页中文字幕| 亚洲国产精品电影在线观看| 免费av一区二区| 日韩av在线播放资源| 亚洲成人a级网| 国产日韩欧美电影在线观看| 黑人精品xxx一区| 欧美激情图片区| 97国产真实伦对白精彩视频8| 久久久精品在线| 欧美日韩中文在线观看| 最近中文字幕mv在线一区二区三区四区| 亚洲精品国产精品自产a区红杏吧| 18久久久久久| 国产日韩在线看片| 亚洲精品456在线播放狼人| 日本伊人精品一区二区三区介绍| 欧美区二区三区| 久久久影视精品| 精品露脸国产偷人在视频| 日韩精品在线观看一区二区| 亚洲一区二区三区成人在线视频精品| 欧洲美女免费图片一区| 麻豆国产精品va在线观看不卡| 日韩免费精品视频| 欧美精品videofree1080p| 亚洲激情视频在线播放| 日韩美女av在线| 亚洲精品一区二区三区婷婷月| 亚洲精品欧美日韩| 91精品国产高清久久久久久久久| 亚洲偷熟乱区亚洲香蕉av| xxxxx91麻豆| 国产日韩欧美电影在线观看| 日韩av片永久免费网站| 欧美日韩午夜剧场| 欧美高清视频在线观看| 久久人人爽人人爽爽久久| 欧美精品xxx| 色www亚洲国产张柏芝| 69**夜色精品国产69乱| 伊人男人综合视频网| 亚洲国产精品久久| 精品亚洲永久免费精品| 国产精品露脸av在线| 中文字幕亚洲无线码在线一区| 久久久精品视频成人| 中文字幕日韩在线视频| 精品成人国产在线观看男人呻吟| 亚洲成人三级在线| 日韩精品免费在线| 色无极影院亚洲| 中文字幕亚洲二区| 亚洲第一av网站| 国产精品久久久久影院日本| 欧美成年人视频| 国产精品久久久久久久久久久久久| 欧亚精品在线观看| 亚洲第一精品夜夜躁人人躁| 亚洲最新av在线网站| 欧美大片在线影院| 国产精品主播视频| 8090成年在线看片午夜| 91精品国产精品| 亚洲精品国产福利| 日韩欧美在线一区| 久久久久久噜噜噜久久久精品| 欧美国产日韩二区| 国产成人在线一区二区| 日韩精品中文字幕视频在线| 国产欧美婷婷中文| 亚洲www在线| 亚洲va码欧洲m码| 国产欧美日韩亚洲精品| 欧美在线视频播放| 亚洲成av人乱码色午夜| 7m第一福利500精品视频| 亚洲精品综合精品自拍| 少妇久久久久久| 亚洲成人亚洲激情| 色99之美女主播在线视频| 亚洲精品视频二区| 欧美插天视频在线播放| 日韩大陆欧美高清视频区| 日韩中文字幕精品| 69av在线播放| 国产精品国模在线| 精品久久久免费| 国产精品亚洲自拍| 欧美美最猛性xxxxxx| 中文在线资源观看视频网站免费不卡| 亚洲在线观看视频网站| 久久99国产精品自在自在app| 波霸ol色综合久久| 久青草国产97香蕉在线视频| 大桥未久av一区二区三区| 26uuu亚洲伊人春色| 欧美一级bbbbb性bbbb喷潮片| 亚洲欧洲日本专区| 日韩精品免费视频| 欧美伊久线香蕉线新在线| 69久久夜色精品国产7777| 91国内免费在线视频| 国产精品一久久香蕉国产线看观看| 中文字幕亚洲专区| 久久久久久亚洲精品中文字幕| 亚洲一区二区三区视频播放| 欧美裸体xxxx| 色婷婷综合久久久久中文字幕1| 久99九色视频在线观看| 在线观看欧美日韩| 亚洲视频在线免费观看| 国产一区二区三区在线观看网站| 91免费在线视频网站| 最近2019中文字幕mv免费看| 91po在线观看91精品国产性色| 国产日韩精品综合网站| 欧美日韩国产一区二区| 欧美夫妻性视频| 久久综合色88| 亚洲一区二区三区在线免费观看| 亚洲影院在线看| 亚洲日本成人网| 国产精品xxx视频| 91亚洲永久免费精品| 久久亚洲欧美日韩精品专区| 97色在线观看免费视频| 深夜福利国产精品| 夜夜嗨av色综合久久久综合网| 亚洲国产91色在线| 懂色av中文一区二区三区天美| 亚洲欧美色图片| 国产成人激情视频|