社区
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上层的结构指针会不会造成内存泄露?
...全文
124
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
作业
写回复
配置赞助广告
用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
内存泄露
检查工具”指的是Visual Leak Detector(VLD),这是一个为Visual C++编译器设计的插件,它可以在运行时检测并报告C++程序中的内存泄漏情况。VLD能够集成到VS2010的环境中,使得开发者可以...
内存泄露
Demo leaky app
当我们谈论“
内存泄露
Demo leaky app”时,我们指的是一个应用程序在使用内存后未能正确释放它,导致系统资源的浪费和可能的性能
问题
。下面将详细讨论
内存泄露
、其对应用程序的影响以及如何检测和修复
内存泄露
。 ...
内存泄漏检测工具leakdiag和配套图形化查看工具LDGrapher
LeakDiag是一个监测内存泄漏的工具,可以用来精确地找到
内存泄露
一直到代码行。它使用微软的Detours 技术,拦截指定内存分配的调用并跟踪各种调用栈,并报告已分配但尚未释放的内存,这一信息允许让我们在排除一个...
关于内存泄漏
问题
(共享内存、请求调页、缺页异常处理)
最近发现了一个
问题
,当不同的进程申请了同一块共享内存时,会有内存泄漏现象,即当程序运行时,有些进程的内存会逐渐 增加,波动幅度较为明显。 2.
问题
排查 通过调试排查,我们发现是共享内存引起的。我们用两...
如何解决内存泄漏
问题
使用编程工具,如Valgrind、Purify等,检查内存泄漏
问题
,这些工具能够监测程序运行时的内存使用情况,从而找出内存泄漏
问题
。通过增加系统内存,提高系统内存的使用效率,可以缓解因内存泄漏带来的系统性能
问题
。...
C语言
70,020
社区成员
243,264
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章