编程小贴士

给你的编程提供小点子


C++插件中使用静态指针变量引起的内存泄露问题

在C++的动态库中,有是为了实现Singleton等功能,经常会使用静态(static)指针变量,并在第一次使用是申请动态分配对象 (new); 但其内存的释放往往依赖程序退出时,操作系统来完成内存回收。对于一般的应用,这是没有问题的,但对于C++ 的插件来说,因为其可能在服务程序中被动态的热加载/卸载(dlopen/dlclose),此时,往往会带来内存泄露问题。

下面来看个示例,来说明这种情况:这个例子中,在插件中,声明一个静态成员指针变量 _buff, 并在第1次使用是申请内存10M. 把代码编译成2个功能相同的动态库(插件),然后各 dlopen/dlclose 50次,看看程序的内存使用情况。

  •  DsoBase.h

 

1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef __DSO_BASE_H_
#define __DSO_BASE_H_
namespace name_1
{
class DsoBase
{
public:
    DsoBase(){};
    virtual ~DsoBase(){};
    virtual void toString()=0;
};
}
#endif

 

  • Dso.h
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef __DSO_DSO_H_
#define __DSO_DSO_H_
#include <stdint.h>
#include <string>
#include "DsoBase.h"
namespace name_1
{
class Dso:public DsoBase
{
public:
    Dso() ;
    virtual ~Dso() ;
    virtual void toString();
private:
    static pthread_mutex_t _mutex;
    static char * _buff;    // 静态成员变量
    const  uint32_t MAX_LEN;
};
}
#endif

 

  • Dso.cpp

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include "Dso.h"
namespace name_1
{
pthread_mutex_t Dso::_mutex = PTHREAD_MUTEX_INITIALIZER;
char * Dso::_buff=NULL;   // 静态成员变量
Dso::Dso():MAX_LEN(10*1024*1024)
{
    printf("Dso constructor\n");
}
Dso::~Dso()
{
    printf("Dso destructor\n");
}
void Dso::toString()
{
    pthread_mutex_lock(&_mutex);
    if(_buff == NULL)
    {//第1次使用是申请分配10M内存
        _buff=(char*)malloc(MAX_LEN);
        memset(_buff,0x0,MAX_LEN);
        printf("_buff=%p\n",_buff);
    }
    pthread_mutex_unlock(&_mutex);
}
}
extern "C" name_1::DsoBase * CreateFun()
{
    return  new name_1::Dso();
}
extern "C" void DestroyFun(name_1::DsoBase * obj)
{
    delete obj;
}

 

  • test_main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <dlfcn.h>
#include "pthread.h"
#include "Dso.h"
typedef name_1::DsoBase * (*CreateFunT)();
typedef void (*DestroyFunT)(name_1::DsoBase * p);
int main(int argc , char ** argv)
{
    // 模拟 ha3 插件更新过程
    for(int i=0; i <50; i ++ )
    {
            //1. dl_open libdso_a.so
        void * dl_a=dlopen("./libdso_a.so",RTLD_NOW);
        if(!dl_a ) {
            printf("dlopen return %s", dlerror());
            return -1;
        }
        CreateFunT createFun_a= (CreateFunT)dlsym(dl_a , "CreateFun");
        DestroyFunT destoryFunc_a = (DestroyFunT)dlsym(dl_a , "DestroyFun");
        name_1::DsoBase* obj_a=createFun_a();
        obj_a->toString();
        //2. dl_open libdso_b.so
        void * dl_b=dlopen("./libdso_b.so",RTLD_NOW);
        if(!dl_b ) {
            printf("dlopen return %s", dlerror());
            return -1;
        }
        CreateFunT createFun_b= (CreateFunT)dlsym(dl_b , "CreateFun");
        DestroyFunT destoryFunc_b = (DestroyFunT)dlsym(dl_b , "DestroyFun");
        name_1::DsoBase* obj_b=createFun_b();
        obj_b->toString();
        sleep(5);
       //3. dl_close libdso_a.so
        destoryFunc_a(obj_a);
        dlclose(dl_a);
        sleep(5);
       //4. 使用 obj_b
        obj_b->toString();
       //5. dl_close libdso_a.so
        destoryFunc_b(obj_b);
        dlclose(dl_b);
        sleep(20);
    }
    return 0;
}

 

  • Scons 的 SContruct
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*- mode: python -*-
import sys, os, os.path, platform, re, time
env = Environment()
env.AppendUnique(CCFLAGS = '-g')
env.AppendUnique(CCFLAGS = '-m64')
env.AppendUnique(CCFLAGS = '-DTARGET_64')
env.AppendUnique(LINKFLAGS = '-m64')
dso_sources = ['Dso.cpp' ]
env.SharedLibrary('dso_a', dso_sources)
env.SharedLibrary('dso_b', dso_sources)
env.Program('test_main',['test_main.cpp'], LIBS=['dl'], LIBPATH='.',LINKFLAGS = '-export-dynamic' )

 

  • 编译

[static_var_and_dynamic_lib_t2]$scons -c && scons

scons: Reading SConscript files …

scons: done reading SConscript files.

scons: Cleaning targets …

Removed Dso.os

Removed libdso_a.so

Removed libdso_b.so

Removed test_main.o

Removed test_main

scons: done cleaning targets.

scons: Reading SConscript files …

scons: done reading SConscript files.

scons: Building targets …

g++ -o Dso.os -c -g -m64 -DTARGET_64 -fPIC Dso.cpp

g++ -o libdso_a.so -m64 -shared Dso.os

g++ -o libdso_b.so -m64 -shared Dso.os

g++ -o test_main.o -c -g -m64 -DTARGET_64 test_main.cpp

g++ -o test_main -export-dynamic test_main.o -L. -ldl

scons: done building targets

  • 执行测试程序

[static_var_and_dynamic_lib_t2]$./test_main

Dso constructor

_buff=0x2b65d7f31010

Dso constructor

_buff=0x2b65d8b34010

Dso destructor

Dso destructor

Dso constructor

_buff=0x2b65d9535010

Dso constructor

_buff=0x2b65da138010

Dso destructor

Dso destructor

Dso constructor

_buff=0x2b65dab39010

Dso constructor

  •  内存使用情况—mem_user

从程序开始执行到结束, 系统 mem_user 从 1.7G (图中1M 表示内存1G )涨到近 2.7G,左右,增涨1G, 正好是2个插件(libdso_a.so 和 libdso_b.so),50次dlopen/dlclose,每次申请 10M 的内存累积量。
可见 dlclose 时,并不会释放动态库(即插件)内动态申请的内存,所以引起内存泄露。

tips1000_2014-08-03_08-48-37

228 Responses to “ C++插件中使用静态指针变量引起的内存泄露问题 ”

  1. best pron说道:

    5as7xr Thanks for some other excellent post. The place else may just anybody get that type of info in

  2. Well I sincerely enjoyed reading it. This tip procured by you is very constructive for correct planning.

  3. colors for kids说道:

    Thanks so much for the blog article.Thanks Again. Cool.

  4. Lung Health说道:

    your articles. Can you recommend any other blogs/websites/forums that cover the same subjects?

  5. Really enjoyed this blog post.Really looking forward to read more.

  6. My Face Gifts说道:

    It as hard to find well-informed people about this topic, but you seem like you know what you are talking about! Thanks

  7. dau sa be tho说道:

    This blog was how do I say it? Relevant!! Finally I have found something which helped me. Kudos!

  8. Click to read说道:

    It is in reality a nice and helpful piece of information. I am satisfied that you shared this helpful tidbit with us. Please stay us informed like this. Thank you for sharing.

  9. Thanks for sharing, this is a fantastic article. Awesome.

  10. Thank you for your post.Really thank you! Really Cool.

  11. website说道:

    The world hopes foor egen more passionate writers like you who aren at afraid to mention

  12. click here说道:

    Wow, amazing blog layout! How long have you ever been blogging for? you made blogging look easy. The full look of your website is magnificent, as well as the content material!

  13. w88world.com说道:

    Muchos Gracias for your article. Will read on

  14. I think this is a real great blog article.Thanks Again. Want more.

  15. You can certainly see your expertise in the work you write. The world hopes for more passionate writers such as you who aren at afraid to mention how they believe. All the time follow your heart.

  16. Really appreciate you sharing this blog article. Really Cool.

  17. Sites we recommend Nice blog here! Also your site loads up very fast! What web host are you using? Can I get your affiliate link to your host? I wish my site loaded up as fast as yours lol

  18. I value the blog.Really looking forward to read more. Great.

  19. private Hire说道:

    Thank you ever so for you blog post.Much thanks again. Much obliged.

  20. Really appreciate you sharing this blog.Really thank you! Awesome.

  21. I truly appreciate this article post. Great.

  22. Thanks-a-mundo for the post.Thanks Again. Keep writing.

  23. PhD Green Card说道:

    Major thanks for the article.Really looking forward to read more. Want more.

  24. share now说道:

    Very good info. Lucky me I found your blog by chance (stumbleupon). I ave book-marked it for later!

  25. du an Rio Verde说道:

    Very Fascinating Blog! Thank You For This Weblog!

  26. You made some clear points there. I looked on the internet for the issue and found most guys will approve with your website.

  27. Nwokolo说道:

    Utterly pent articles , regards for selective information.

  28. This is very interesting, You are a very skilled blogger. I have joined your rss feed and look forward to seeking more of your excellent post. Also, I have shared your web site in my social networks!

  29. This is very interesting, You are a very skilled blogger. I have joined your feed and look forward to seeking more of your excellent post. Also, I ave shared your web site in my social networks!

  30. This site can be a stroll-by means of for all the information you needed about this and didn?t know who to ask. Glimpse right here, and also you?ll undoubtedly uncover it.

  31. Best Music site说道:

    You have brought up a very great points , thanks for the post.

  32. Warehousing Kiev说道:

    Utterly indited subject material, appreciate it for entropy. The earth was made round so we would not see too far down the road. by Karen Blixen.

  33. take a look at说道:

    There is visibly a bundle to identify about this. I think you made some nice points in features also.

  34. wonderful issues altogether, you just received a logo new reader. What may you suggest in regards to your submit that you just made some days ago? Any positive?

  35. Thank you ever so for you article post.Much thanks again. Keep writing.

  36. You have observed very interesting details ! ps nice web site. I understand a fury in your words, But not the words. by William Shakespeare.

  37. Thanks-a-mundo for the article.Thanks Again. Really Great.

  38. credits online说道:

    Remarkable things here. I am very satisfied to look your article.

  39. giay da nam说道:

    you could have an amazing blog here! would you prefer to make some invite posts on my weblog?

  40. sim mobifone说道:

    you can even cross your pinkies. In about three weeks ago I

  41. sim so dep说道:

    This is a topic that as near to my heart Cheers! Where are your contact details though?

  42. You could certainly see your skills within the work you write. The world hopes for more passionate writers such as you who are not afraid to mention how they believe. At all times go after your heart.

  43. play说道:

    this topic. You realize so much its almost hard to argue with you (not

  44. tips说道:

    Of course, what a fantastic site and illuminating posts, I will bookmark your site.Best Regards!

  45. mmbanifo说道:

    you can check here view of Three Gorges | Wonder Travel Blog

  46. Ridiculous story there. What happened after? Good luck!

  47. I was able to find good info from your content.

  48. Hosting说道:

    I will not talk about your competence, the write-up basically disgusting

  49. U never get what u expect u only get what u inspect

  50. I truly appreciate this blog article.Thanks Again. Keep writing.

  51. Music began playing any time I opened this web site, so frustrating!

  52. Crochet poncho说道:

    they have been a moment to consider taking a shot?

  53. Arctic Circle说道:

    the way through which you assert it. You make it entertaining and

  54. local说道:

    Thanks pertaining to discussing the following superb written content on your site. I ran into it on the search engines. I will check back again if you publish extra aricles.

  55. white shoes说道:

    location where the hold placed for up to ten working days

  56. value说道:

    Thank you ever so for you blog.Really looking forward to read more. Keep writing.

  57. What as up, just wanted to say, I liked this post. It was helpful. Keep on posting!

  58. School news说道:

    whoah this weblog is great i really like studying your articles. Stay up the great work! You already know, lots of persons are looking round for this information, you can aid them greatly.

  59. Exams说道:

    The Silent Shard This can most likely be very practical for a few of the positions I decide to do not only with my website but

  60. This blog was how do you say it? Relevant!! Finally I ave found something which helped me. Appreciate it!

  61. Supporters of Manchester United, City, Chelsea and Arsenal. He was also named the World Soccer Player of the Year.

  62. I think this is a real great blog post.Thanks Again. Really Cool.

  63. just wondering if you get a lot of spam responses? If so how

  64. It as nearly impossible to find experienced people in this particular subject, but you sound like you know what you are talking about! Thanks

  65. Really informative post.Much thanks again. Awesome.

  66. You have remarked very interesting details ! ps nice internet site. аАа’аАТ‚аЂТ˜Tis a sharp medicine, but it will cure all that ails you. аАа’аАТ‚б‚Т€Т last words before his beheadding by Sir Walter Raleigh.

  67. I think this is a real great blog. Will read on

  68. Wanted to drop a remark and let you know your Rss feed isnt working today. I tried including it to my Google reader account but got nothing.

  69. I think you have observed some very interesting details , regards for the post.

  70. ventas说道:

    This especially helped my examine, Cheers!

  71. arte de vender说道:

    you might have a fantastic blog here! would you like to make some invite posts on my weblog?

  72. We stumbled over here different page and thought I may as well check things out. I like what I see so i am just following you. Look forward to looking into your web page repeatedly.

  73. MTN说道:

    we like to honor several other net internet sites around the web, even though they aren

  74. yourin designed pain ll cumulative n morphine rate you

  75. girl games说道:

    Wonderful blog! I found it while browsing on Yahoo News. Do you have any tips on how to get listed in Yahoo News? I ave been trying for a while but I never seem to get there! Thanks

  76. Just to let you know your webpage appears a little bit unusual in Firefox on my notebook with Linux.

  77. Im grateful for the blog.Really thank you! Much obliged.

  78. When some one searches for his essential thing, therefore he/she wants to be available that in detail, so that thing is maintained over here.

  79. We have joined your feed and show to seeking even more of your wonderful post. Also, We have shared your site with my support systems!

  80. This is one awesome article post. Really Great.

  81. you could have a fantastic weblog here! would you wish to make some invite posts on my weblog?

  82. mjagkie okna说道:

    Keep up the superb piece of work, I read few articles on this web site and I think that your web blog is very interesting and has got sets of great info.

  83. Looking forward to reading more. Great blog post.Much thanks again. Keep writing.

  84. Thanks a lot for the article post. Awesome.

  85. devotionals说道:

    important site Of course, you are not using some Under-developed place, The united kingdom possesses high water-purification benchmarks

  86. check out说道:

    I reckon something really interesting about your weblog so I saved to bookmarks.

  87. browse说道:

    You, my friend, ROCK! I found exactly the information I already searched all over the place and simply couldn at locate it. What a great web site.

  88. Thank you for helping out, fantastic information. Considering how dangerous everything is, nothing is really very frightening. by Gertrude Stein.

  89. Some genuinely good posts on this internet site , appreciate it for contribution.

  90. Ipad keyboard case view of Three Gorges | Wonder Travel Blog

  91. to learn more说道:

    Outstanding post, I conceive website owners should larn a lot from this website its rattling user genial.

  92. I think this is a real great blog article. Awesome.

  93. Thanks-a-mundo for the article post.Really thank you! Great.

  94. I used to be able to find good information from your articles.

  95. Thanks-a-mundo for the article post.Really thank you! Really Great.

  96. The text in your content seem to be running off the screen in Opera.

  97. I value the blog post.Really looking forward to read more. Really Cool.

  98. Your style is really unique in comparison to other people I ave read stuff from. Thanks for posting when you have the opportunity, Guess I will just book mark this site.

  99. Thanks for sharing, this is a fantastic post.Much thanks again. Fantastic.

  100. wow, awesome article.Really thank you! Cool.

  101. share说道:

    Last week I dropped by this web site and as usual wonderful content material and ideas. Like the lay out and color scheme

  102. you can check说道:

    Major thankies for the article.Much thanks again. Fantastic.

  103. This is one awesome blog article.Thanks Again. Really Great.

  104. You have made some decent points there. I looked on the net to find out more about the issue and found most people will go along with your views on this website.

  105. post an ad说道:

    You created some decent points there. I looked on line for that concern and located most of the people will go coupled with with all of your web site.

  106. go to see说道:

    It as awesome for me to have a web site, which is good in favor of my know-how. thanks admin

  107. really make my blog jump out. Please let me know where you got your theme.

  108. for more info说道:

    Thanks so much for the blog post. Great.

  109. It as very straightforward to find out any matter on net as compared to textbooks, as I found this article at this site.

  110. Lera Pecoraro说道:

    I am constantly thought about this, thanks for putting up.

  111. Well I really enjoyed reading it. This subject provided by you is very constructive for good planning.

  112. view说道:

    Whispering Misty So sorry you all skip the workshop!

  113. Way cool! Some very valid points! I appreciate you penning this article and also the rest of the site is extremely good.

  114. daftar pb说道:

    Wonderful post! We will be linking to this great content on our site. Keep up the good writing.

  115. official site说道:

    What as up, simply wanted to say, I enjoyed this article. It was pretty practical. Continue posting!

  116. go there说道:

    Thanks for sharing your info. I really appreciate your efforts and I will be waiting for your further post thanks once again.

  117. I’а†ll right away grasp your rss feed as I can not to find your email subscription link or newsletter service. Do you have any? Kindly permit me recognize so that I may subscribe. Thanks.

  118. You have brought up a very good points , thanks for the post.

  119. I really liked your blog article.Really thank you! Awesome.

  120. iOS app developer blues | Craft Cocktail Rules

  121. other details说道:

    I think other web-site proprietors should take this website as an model, very clean and excellent user genial style and design, let alone the content. You are an expert in this topic!

  122. go here说道:

    The issue is something that not enough men and women

  123. good morning说道:

    You need to participate in a contest for probably the greatest blogs on the web. I will recommend this site!

  124. Wow, fantastic blog format! How long have you ever been running a blog for? you make blogging look easy. The entire look of your web site is excellent, let alone the content material!

  125. Major thankies for the blog.Really looking forward to read more. Really Great.

  126. you will have an amazing weblog here! would you wish to make some invite posts on my weblog?

  127. aio city说道:

    Terrific post however , I was wanting to know if you could write a litte more

  128. Say, you got a nice blog article.Much thanks again. Keep writing.

  129. magnificent points altogether, you just gained a new reader. What may you suggest in regards to your publish that you simply made a few days ago? Any sure?

  130. Thanks a lot for the blog post.Much thanks again. Really Cool.

  131. I simply could not go away your website before suggesting that I really enjoyed the standard info an individual provide to your visitors? Is gonna be back continuously to inspect new posts

  132. You made some good points there. I did a search on the issue and found most individuals will approve with your blog.

  133. heya. I notice that you’re most likely interested in building back-links and stuff. I’m promoting scrapebox auto approve link lists. If you’d like to trade ?

  134. Very informative article.Thanks Again. Great.

  135. Muchos Gracias for your blog post.Really thank you! Really Great.

  136. Game Online说道:

    Pretty! This has been a really wonderful post. Many thanks for providing this information.

  137. JIMMY CHOO OUTLET ??????30????????????????5??????????????? | ????????

  138. Just what I was searching for, thankyou for putting up.

  139. Or maybe a representative speaking on behalf of the American University,

  140. right now说道:

    You are my intake, I possess few web logs and sometimes run out from brand . Actions lie louder than words. by Carolyn Wells.

  141. Very clear site, thankyou for this post.

  142. some really good info , Gladiola I discovered this.

  143. Jamar Kanzenbach说道:

    I thought I would leave my first comment. I don’t know what to say except that I have enjoyed reading. Nice blog. I will keep visiting.

  144. writing like yours these days. I truly appreciate individuals like you! Take care!! Feel free to visit my blog post aarp life insurance

  145. Well I definitely enjoyed studying it. This post procured by you is very constructive for correct planning.

  146. This is a topic that is near to my heart Thank you! Where are your contact details though?

  147. Zebra说道:

    You have mentioned very interesting points! ps decent web site.

  148. visit website说道:

    I was recommended this blog by my cousin. I am not sure whether this post is written by him as nobody else know such detailed about my difficulty. You are amazing! Thanks!

  149. Your style is really unique compared to other people I ave read stuff from. Thanks for posting when you ave got the opportunity, Guess I will just book mark this blog.

  150. Looking around I like to surf around the web, often I will just go to Digg and follow thru

  151. bitcoin说道:

    I really liked your article post.Really looking forward to read more. Awesome.

  152. find out more说道:

    Thanks again for the article post.Really thank you! Really Cool.

  153. may bo dam说道:

    This is very interesting, You are a very skilled blogger. I ave joined your feed and look forward to seeking more of your wonderful post. Also, I ave shared your web site in my social networks!

  154. thank you for this post, I am a big fan of this site would like to go along updated.

  155. KS说道:

    My brother recommended I might like this website. He was totally right. This post truly made my day. You cann at imagine just how much time I had spent for this information! Thanks!

  156. khoa van tay说道:

    Normally I do not read article on blogs, but I would like to say that this write-up very compelled me to check out and do it! Your writing style has been surprised me. Thanks, very nice article.

  157. click here说道:

    I used to be able to find good advice from your blog articles.

  158. You are my function designs. Many thanks for the write-up

  159. Your place is valueble for me. Thanks!aаАа’б‚Т€ТšаЂаŒаАТ’аЂа†

  160. coupon2019说道:

    Wow! This could be one particular of the most useful blogs We have ever arrive across on this subject. Basically Fantastic. I am also an expert in this topic therefore I can understand your effort.

  161. This excellent website really has all the information I needed about this subject and didn at know who to ask.

  162. i love pron说道:

    16rJWY Pretty good post. I just discovered your weblog and wanted to say which i have actually enjoyed browsing your website posts

  163. Alhambra realtor说道:

    Keep up the excellent piece of work, I read few blog posts on this website and I conceive that your web site is really interesting and has got circles of great information.

  164. Covina realtor说道:

    wow, awesome post.Thanks Again. Much obliged.

  165. Thanks-a-mundo for the article.Thanks Again. Really Cool.

  166. So happy to have located this submit.. Excellent thoughts you possess here.. yes, study is having to pay off. I appreciate you expressing your point of view..

  167. This is a topic that as near to my heart Many thanks! Exactly where are your contact details though?

  168. Really appreciate you sharing this blog post.Much thanks again. Will read on

  169. know more说道:

    Wow, superb blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your website is great, as well as the content!

  170. Wow, wonderful weblog format! How long have you been blogging for? you make running a blog look easy. The total look of your website is wonderful, let alone the content material!

  171. Thanks a lot for the blog.Really looking forward to read more. Great.

  172. bistro masa说道:

    Yay google is my world beater assisted me to find this great site!.

  173. Singapore Tattoo说道:

    I was recommended this website by my cousin. I am not sure whether this post is written by him as no one else know such detailed about my problem. You are amazing! Thanks!

  174. I surely did not realize that. Learnt a thing new nowadays! Thanks for that.

  175. You definitely put a brand new spin on a subject that has been

  176. Tattoo Artist说道:

    spelling issues and I to find it very troublesome to tell the truth however I will definitely come back again.

  177. link vao 188bet说道:

    You have done a extraordinary job! Also visit my web page medi weightloss

  178. High Quality说道:

    Thank you Eric, Thanks for those templates.

  179. ceti说道:

    Wow, amazing blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your website is fantastic, let alone the content!

  180. The Venus Factor说道:

    Really appreciate you sharing this blog article.Thanks Again. Great.

  181. 404 error说道:

    Wow, incredible blog layout! How long have you been blogging for? you made blogging look easy. The overall look of your site is wonderful, let alone the content!. Thanks For Your article about sex.

  182. Thanks for the article.Really thank you! Keep writing.

  183. It seems too complex and very broad for me. I am having a look ahead on your subsequent post, I will try to get the dangle of it!

  184. Escorts Miami说道:

    Some truly excellent blog posts on this internet site , thanks for contribution.

  185. Really informative article post.Really looking forward to read more. Really Great.

  186. Terrific Post.thanks for share..much more wait..

  187. escorts sydney说道:

    Very nice write-up. I definitely appreciate this site. Thanks!

  188. houston escorts说道:

    Very good day i am undertaking research at this time and your website actually aided me

  189. pokeronline说道:

    you should always be careful with recruitment agencies because some of them are just scammers;;

  190. low fat foods说道:

    That is a good tip especially to those fresh to the blogosphere. Brief but very accurate information Appreciate your sharing this one. A must read article!

  191. wow, awesome post.Really thank you! Cool.

  192. There is visibly a bunch to realize about this. I believe you made certain good points in features also.

  193. cat说道:

    Awesome and really interesting post here. I very much enjoy sites that have to do with losing weight, so this is perfect to me to discover what you have here. Keep up the great work! how to lose weight fast

  194. The Lost Ways说道:

    Some genuinely superb info , Gladiolus I observed this.

  195. Very informative article post. Really Cool.

  196. Dave说道:

    Thanks-a-mundo for the blog article.Much thanks again.

  197. I?ve read some just right stuff here. Definitely value bookmarking for revisiting. I surprise how so much attempt you place to make any such great informative website.

  198. There is certainly a great deal to find out about this subject. I like all the points you ave made.

  199. Barcode说道:

    Major thankies for the blog.Really looking forward to read more. Keep writing.

  200. 바다 이야기说道:

    Very informative blog article.Really thank you! Cool.

  201. you ave got a great weblog here! would you like to make some invite posts on my weblog?

  202. Incredible! This blog looks just like my old one! It as on a totally different subject but it has pretty much the same layout and design. Excellent choice of colors!

  203. Major thanks for the blog article.Much thanks again. Great.

  204. I truly appreciate this blog.Really looking forward to read more. Cool.

  205. Nonton Anime说道:

    HOPE I DIDNT MISS OUT ON THE FOOD… IM STARVING….|MsAndreaBlue|

  206. We stumbled over here different web page and thought I might as well check things out. I like what I see so now i am following you. Look forward to checking out your web page for a second time.

  207. website a lot of times previous to I could get it to load properly.

  208. Within the occasion you can email myself by incorporating suggestions in how you have produced your web site search this brilliant, I ad personally have fun right here.

  209. 다잡아说道:

    Really appreciate you sharing this article.Really thank you! Cool.

  210. 토토 사이트说道:

    I value the article post.Much thanks again. Awesome.

  211. This particular blog is definitely awesome and also diverting. I have chosen a lot of handy tips out of this blog. I ad love to return again soon. Thanks a bunch!

  212. 릴게임说道:

    of a user in his/her brain that how a user can understand it.

  213. Nice post. I learn something new and challenging on blogs I stumbleupon every day. It will always be exciting to read articles from other writers and practice something from other websites.

  214. This unique blog is definitely awesome and also informative. I have picked helluva useful advices out of this blog. I ad love to return again and again. Cheers!

  215. Really appreciate you sharing this blog article.Really thank you!

  216. 토토사이트说道:

    Since search engines take hundreds and hundreds of factors into

  217. 다잡아说道:

    Thanks so much for the blog post.Really thank you! Really Great.

  218. Thank you for your blog post.Much thanks again. Cool.

  219. Major thankies for the blog post.Thanks Again. Will read on

  220. You have made some really good points there. I looked on the net for more information about the issue and found most people will go along with your views on this site.

  221. I think this is a real great blog article.Thanks Again. Keep writing.

  222. Really enjoyed this blog.Really looking forward to read more. Keep writing.

  223. Kickboxing说道:

    Very informative blog article.Much thanks again. Much obliged.

  224. 먹튀폴리스说道:

    Some truly great content on this internet site , thanks for contribution.

  225. Im thankful for the blog post.Thanks Again. Really Cool.

  226. pretty helpful material, overall I imagine this is worth a bookmark, thanks

  227. Received the letter. I agree to exchange the articles.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>