社区
C语言
帖子详情
关于内存泄露的问题
zouxinfox
2008-05-12 07:51:44
struct A
{
char *p;
};
struct A *a=(struct A*)malloc(sizeof(struct A));
a->p=(char *)malloc(sizeof(char));
在释放内存时是
free(a);
还是
free(a->p);
free(a);
也就是说仅仅free上层的结构指针会不会造成内存泄露?
...全文
143
9
打赏
收藏
关于内存泄露的问题
struct A { char *p; }; struct A *a=(struct A*)malloc(sizeof(struct A)); a->p=(char *)malloc(sizeof(char)); 在释放内存时是 free(a); 还是 free(a->p); free(a); 也就是说仅仅free上层的结构指针会不会造成内存泄露?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hjack
2008-05-12
打赏
举报
回复
malloc和free配对使用.
mymtom
2008-05-12
打赏
举报
回复
[Quote=引用楼主 zouxinfox 的帖子:]
struct A
{
char *p;
};
struct A *a=(struct A*)malloc(sizeof(struct A));
a->p=(char *)malloc(sizeof(char));
在释放内存时是
free(a);
还是
free(a->p);
free(a);
也就是说仅仅free上层的结构指针会不会造成内存泄露?
[/Quote]
还是
free(a->p);
free(a);
仅仅free上层的结构指针会造成内存泄露
cjls1
2008-05-12
打赏
举报
回复
都要释放,如果觉得难理解,可以这样想
struct A *a=(struct A*)malloc(sizeof(struct A)); 对结构体开辟空间,结构体中只有个指针,那么只开辟了这个指针的空间,4字节一般(再加上其他结构体附加空间),此时这个指针指向的空间内容未定。(指针指向的内容多大不知道)
a->p=(char *)malloc(sizeof(char)); 对p指向的字符(串)开辟空间,如果p要指向比如说“abcde”这样的字符串,可以malloc(sizeof(char)*N),N自定,然后p指针指向的空间就可以赋值使用了。
如果free时,只free(a),你想想,只是把这个指针占的空间回收了,它指向的那一串东西还在内存里,所以就早成了泄露。
zouxinfox
2008-05-12
打赏
举报
回复
多谢大家,如果我没猜错的话,楼上的那位書記貌似是我所在的一个UNIX群的老大,呵呵,很热心的一说
Xshl5
2008-05-12
打赏
举报
回复
[Quote=引用 2 楼 mscf 的回复:]
都要free,malloc和free就是需要成对出现的
[/Quote]
有道理。
lixun_21
2008-05-12
打赏
举报
回复
[Quote=引用 3 楼 lixun_21 的回复:]
都要释放啊
当你free(a);后 a为一个野指针 只向随机位置
p之前分配的内存也就泄漏了。
所以要 先free(a->p);
然后free(a);才不会造成内存泄漏
[/Quote]
lixun_21
2008-05-12
打赏
举报
回复
都要释放啊
当你free(a);后 a为一个野指针 只向随机位置
p之前的内存也就泄露的
所以要 先free(p);
然后free(a);才不会造成内存泄漏
薛定谔之死猫
2008-05-12
打赏
举报
回复
都要free,malloc和free就是需要成对出现的
jieao111
2008-05-12
打赏
举报
回复
都得释放吧
vs2010
内存泄露
检查工具
vs2010的c++
内存泄露
检查工具,可定位到出错代码行、开源免费工具。
内存泄露
Demo leaky app
内存泄露
Demo leaky app
内存泄漏检测工具leakdiag和配套图形化查看工具LDGrapher
LeakDiag是一个监测内存泄漏的工具,可以用来精确地找到
内存泄露
一直到代码行。它使用微软的Detours 技术,拦截指定内存分配的调用并跟踪各种调用栈,并报告已分配但尚未释放的内存,这一信息允许让我们在排除一个
内存泄露
问题
时,能精确查看哪些组件进行了该分配。使用正确的调试符号,我们甚至可以看见请求分配的代码行。
如何高效解决 Java 内存泄漏
问题
方法论
本文介绍了高效诊断和优化 Java 内存泄漏
问题
的系统化方法。通过获取内存快照、使用 MAT 和 JProfiler 等工具分析对象,逐步排查泄漏源,确认
问题
并优化代码,开发者可以解决内存泄漏并提升应用性能。内容包括内存快照生成、内存差异对比、疑似泄漏检测、代码优化等,确保垃圾回收机制正常工作,最终提高应用的稳定性和效率。
关于内存泄漏
问题
(共享内存、请求调页、缺页异常处理)
1.
问题
描述 最近发现了一个
问题
,当不同的进程申请了同一块共享内存时,会有内存泄漏现象,即当程序运行时,有些进程的内存会逐渐 增加,波动幅度较为明显。 2.
问题
排查 通过调试排查,我们发现是共享内存引起的。我们用两个进程分别初始化同一个共享内存(5M),然后什么都不做,测试结果是第一个进程占用的内存是5M左右,第二个进程占用的内存是200K左右,结果如下图所示。 ...
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章