关于内存泄露的!

yiruirui0507 2010-03-25 02:28:23
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
void GetMemory(char **p, int num);
void Test(void);
void GetMemory(char **p, int num)
{
*p = (char*)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);

}
void main()
{

Test();
}
这个是练习的一个小例子,存在内存泄露的问题,
我想问的是现在该如何把泄露的内存成功释放掉呢?
希望大家多动动脑子,把自己认为对的方法写出来,先说声谢谢各位了!! 各显神通吧!!!
...全文
99 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
stayseven 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 perfumekristy 的回复:]

free(str);
str = NULL;
[/Quote]
爬了这么多楼
终于看到一个了
coding进阶 2010-03-25
  • 打赏
  • 举报
回复
free(str);
str = NULL;
moon6623 2010-03-25
  • 打赏
  • 举报
回复
学习了
yiruirui0507 2010-03-25
  • 打赏
  • 举报
回复
哈哈,不错,我希望的就是你这样的效果!!!
yiruirui0507 2010-03-25
  • 打赏
  • 举报
回复
哈哈,不错,我希望的就是你这样的效果!!!
cattycat 2010-03-25
  • 打赏
  • 举报
回复
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
free(str);
}
//用这个分配空间
char* void GetMemory(int num)
{
char *p = (char*)malloc(num);
return p;
}

//调用的时候
char* str=GetMemory(20);
//最后释放时候
free(str)
sunnylemon1985 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yiruirui0507 的回复:]
哈哈,前面两位的方法可以实现!
能不能再借助一个函数把分配的空间传递出来,然后释放呢??如何实现呢?
十分期待大家的表现!!!
[/Quote]

你的意思就获取内存地址么?
yiruirui0507 2010-03-25
  • 打赏
  • 举报
回复
哈哈,前面两位的方法可以实现!
能不能再借助一个函数把分配的空间传递出来,然后释放呢??如何实现呢?
十分期待大家的表现!!!
linyongzuo 2010-03-25
  • 打赏
  • 举报
回复
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
if( str )
{
free( str );
}

}
昵称很不好取 2010-03-25
  • 打赏
  • 举报
回复
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
if(str)
free(str);
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧