社区
Linux/Unix社区
帖子详情
【讨论】动态库资源释放问题
dongpy
2008-12-11 04:04:36
主线程main,后台线程back,动态库lib.so
main创建back,back调用lib.so中的函数func,func调用了malloc。
问题是:当main调用pthread_cancel杀掉back时,func尚未执行free释放动态内存,那么func中malloc的内存会自动释放吗?
lib.so中的全局数据存放在何处,是main的数据段,还是在其他数据段?
...全文
178
7
打赏
收藏
【讨论】动态库资源释放问题
主线程main,后台线程back,动态库lib.so main创建back,back调用lib.so中的函数func,func调用了malloc。 问题是:当main调用pthread_cancel杀掉back时,func尚未执行free释放动态内存,那么func中malloc的内存会自动释放吗? lib.so中的全局数据存放在何处,是main的数据段,还是在其他数据段?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
linlan999
2008-12-14
打赏
举报
回复
在调用函数时,被调函数中定义的非static局部变量都在主调进程中的stack中。
可以考虑一下多个进程同时调用某个函数的情形,如果其中的非static局部变量保存在函数库中话,
很显然会出问题,so...
至于lib.so中的全局数据,我想由os管理,这时如果多个进程使用lib.so中的全局变量,就会出问题了。
个人理解
猫已经找不回了
2008-12-13
打赏
举报
回复
既然是后台线程,又不是子进程,应该不用担心吧。反正主线程还能做善后处理。数据都在该进程的堆里。
sourceid
2008-12-13
打赏
举报
回复
Require explicit free, or it will cause memory leak.
dongpy
2008-12-12
打赏
举报
回复
印象中,动态库应该是映射到进程的独立的段上的。
benbenxiaoluchi
2008-12-12
打赏
举报
回复
不会自动释放。
once_and_again
2008-12-12
打赏
举报
回复
是不是谁调用,谁负责?
unilgr
2008-12-11
打赏
举报
回复
[Quote=引用楼主 dongpy 的帖子:]
主线程main,后台线程back,动态库lib.so
main创建back,back调用lib.so中的函数func,func调用了malloc。
问题是:当main调用pthread_cancel杀掉back时,func尚未执行free释放动态内存,那么func中malloc的内存会自动释放吗?
[/Quote]
是动态加载libXXX.so吗?
无论在那个线程调用func,malloc分配的内存都属在进程堆上,和平常使用没区别
[Quote=引用楼主 dongpy 的帖子:]
lib.so中的全局数据存放在何处,是main的数据段,还是在其他数据段?
[/Quote]
进程数据段
java和C#内存
释放
释-调用C++的内存
释放
释放
问题
本文
讨论
java和C#调用C++写的
动态库
的内存
问题
,前提是C++写的
动态库
没有内存泄漏
问题
,c++的内存
问题
不在本章
讨论
的范围之类。
问题
场景为:C++调用直接测试调用没内存泄漏,跑很长时间都可以,但是java和C#调用的时候就是运行一段时间后就内存涨起来了,也不能很好的降下去,直到内存崩溃。 目前java调用C++无非使用JNI调用,C#可以使用com组件或者 dllimp...
C/C++ 实现动态
资源
文件
释放
当我们开发Windows应用程序时,通常会涉及到使用
资源
(Resource)的情况。
资源
可以包括图标、位图、字符串等,它们以二进制形式嵌入到可执行文件中。在某些情况下,我们可能需要从可执行文件中提取自定义
资源
并保存为独立的文件。在这篇博客文章中,我们将
讨论
如何使用C++和WinAPI实现这个目标。首先,让我们考虑一个场景:我们有一个 Windows 应用程序,其中包含了一个自定义的二进制
资源
比如默认的配置文件,我们希望将这个
资源
提取出来并保存为一个独立的文件以用于初始化程序配置项。为了实现这个目标,我们可以
C#
资源
释放
C#
资源
释放
: public class ClassDome:IDisposable { public int Count { get; set; } public string Str { get; set; } private IntPtr handle; public StreamReader reader =nul...
linux下
动态库
静态库编译
linux下文件的类型是不依赖于其后缀名的,但一般来讲: .o,是目标文件,相当于windows中的.obj文件 .so 为共享库,是shared object,用于动态连接的,和dll差不多 .a为静态库,是好多个.o合在一起,用于静态连接 .la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式 $file *.la
C++
资源
释放
C++内存
释放
,指针的存在,一直都是很困扰的一个
问题
,怎样
释放
资源
,成了很大的难题,本文抛砖引玉,整理自己对内存的一些理解,并记录下来,不对之处,还望不吝指正。 C++内存分类: 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被
释放
。栈内存分
Linux/Unix社区
23,124
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章