gethostbyname第二次调用的时候,会覆盖掉前一次的
来源:互联网 发布:刘德华 人物评价 知乎 编辑:程序博客网 时间:2024/05/17 21:06
今天群友A问:
gethostbyname 返回的是一个指针,这个指针的生存周期是到程序结束?
群友B答:
gethostbyname 返回只要指针没被释放或者 未出栈就一直在
(如果是指针的话,显然和定义的作用域有关。但返回的关键不是这个地址,而是个结构体数据,这个数据的生存期该到什么时候结束呢?为了把话题扯到正规)
我追问:
gethostbyname返回的是个指针,是个地址,地址释放了,原来的存的会释放吗?
群友答:
不需要释放
这点小内存
还没看到哪本书上释放了呢
现在不是128kb内存的时代了
(每次调用,都产生一些内存,积少成多,也是大隐患大,这十分不安全,肯定有我们不知道的原因)
------------------------
用OD跟踪编译好的,gethostbyname的返回数据的,发现他用的是堆上的数据,而子函数退出,内存也没被释放。
然后我第二次用gethostbyname,发现第二次的竟然和第一次的在同一个地址。
整理如下
gethostname(name, sizeof(name));//主机名 struct hostent FAR * pHostent; pHostent = gethostbyname(name);//获得IP char name2[128]={"VirtualXP-60916"};//其他主机名 gethostbyname(name2);//这里会覆盖pHostent指向的区域,造成本机IP获取错误 LPSTR lpAddr = pHostent->h_addr_list[0]; struct in_addr inAddr; memmove (&inAddr, lpAddr, 4); CString str = inet_ntoa (inAddr); printf("本机地址:%s \n",str);//错误的本机IP
结论:
gethostbyname第二次调用的时候,会覆盖掉前一次的。
mark一下,以后出现bug,考虑下是不是这种情况。。。。
0 0
- gethostbyname第二次调用的时候,会覆盖掉前一次的
- Ueditor富编辑器第二次打开的时候会渲染失败
- Ueditor富编辑器第二次打开的时候会渲染失败
- (4.3.2.18)PendingItent的第二次会覆盖第一次的intent内容
- 趣拍SDK的使用其他颜色渲染,和第二次录制的时候会崩溃问题
- reboot系统调用的时候会调用shutdown函数
- Ueditor富编辑器做弹出或是某些情况第二次打开的时候会渲染失败
- 函数内部的静态变量只会调用一次
- 将一个list中的值完整的取出来,防止被前一次覆盖的问题
- 常常在拼网页的时候,js调用会失效
- 【Hibernate】[BUG] 执行save()之后,这次的数据会覆盖上一次的数据
- axes对象的句柄会消失,即首次调用有效,第二次就出现
- bos webservice接口后登陆用户会覆盖前用户的context的解决方法
- 毕业前第二次面试的感慨
- 文本框中默认显示出用户名,当输入名字的时候会覆盖用户名
- Page_load部分会在一次页面加载的时候执行两次
- ViewGroup中含有子View的时候,子View会执行OnDraw()方法一次或两次。
- jQuery给一个元素绑定事件前,一次点击会多次触发的问题所在
- android 实现textView的走马灯
- 从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- MediaPlayer播放网络视频
- hadoop中各种输入输出格式
- VC6.0增加对GDI+支持的配置方式
- gethostbyname第二次调用的时候,会覆盖掉前一次的
- 做友链的时候该看重对方网站什么
- hdu 4709
- Android Developers:保存文件
- web.xml 详细介绍
- prepend(content)和append(content)的用法
- HDU 1078 FatMouse and Cheese(记忆化)
- chrome 开发者工具 使用指南
- 脸部识别JavaScript类库Tracking.js