malloc申请后用free释放内存

malloc申请一个字符串数组(大小自己输入)
之后输入内容(可不存满) printf显示
最后free全部释放掉 (怎么释放?循环一个一个放?还是释放首地址即可)
再想办法测试 是否释放成功 比如再次显示?
请高手给出例子 谢谢!

另外如果不及时释放 这块内存会被占到什么时候

释放首地址
ex
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *get_menory()
{
char *p;
p=(char *)malloc(100);
return p;
}
void main()
{
char *str=NULL;
str=get_menory();
strcpy(str,"hello word");
printf(str);
free(str);
}追问

free完了以后该怎么检验?有什么方法吗?

追答

检查,一般是不太好检查的,它是动态分配的
就算你没有free,程序基本上还是能通过的,只是会存在内存泄露,这个是操作系统的致命漏洞
所以malloc用起来一定要谨慎,不然很容易出现安全隐患
这个回复不知道你满意不满意

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-16
free(数组名);
如上释放内存即可
不及时释放,最终会造成内存泄漏的追问

仅仅加上数组名就行吗?保证全部释放?我看看大家都采用循环,一个一个释放啊

追答

由于free和malloc配对使用,malloc的时候,大小已经告诉系统了。

free的时候,系统会比对一下这个地址,是不是malloc申请的,如果不是,不给释放

如果是的话,系统就知道要释放多大内存,因为malloc的时候,系统有记录的。

当然了,申请的地址,也记录了的,否则,就无法比对了。

malloc之后再进行free,free的内存空间一定被os回收了吗?
当程序通过malloc函数请求内存时,操作系统会从内存池中分配一段连续的内存块。同样,当程序调用free函数释放内存时,这段内存会暂时回到内存池中,等待再次被分配。理论上,这表示操作系统会在适当的时候回收这些内存空间,以便为其他程序提供可用资源。以glibc为例,内存管理机制更为复杂。free掉的内存不一...

malloc之后再进行free,free的内存空间一定被OS回收了吗
1 malloc后的内存除了等到free来释放,还可以等到程序运行结束时自动释放2 程序运行过程中,如果一直malloc内存而不释放会导致这部分内存不能被再次使用,即内存泄露。这样以来,应用程序会逐渐用光所有可用的内存,最终导致应用程序因内存不足而崩溃停止。3 所以一个好的习惯是,malloc后一定要记得free之。

malloc之后再进行free,free的内存空间一定被OS回收了吗
为了避免这个问题,内存管理通常有一个免费的列表,删掉的那些没用的东西就在这里面了。那么你可能会释放很散乱的内存过来,没关系,我们在这里会尝试合并这些散乱的block,而malloc首先找的也是free block list,而非从OS申请新的内存。所以如果你找到了合适的自然最好的,如果你发现了一个比你想要的更...

malloc给指针分配内存后,用free释放内存时出错
放在的静态常量区(这个你需要补充一下内存分布的知识),所以“abc”有一个地址,你把这个地址赋给了p,使得p指向了静态常量区的一个地方,然后你free(p),这时就出错了,因为p已经不指向malloc分配的那区域了,严格来说这已经照成了内存泄露。呵呵~...

malloc函数的用法
malloc函数的用法就是和free函数配对使用。malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址。当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,且分配的大小就是程序要求的大小。其作用是在...

当malloc()为一个函数的局部指针分配内存时, 还需要用free()明确的释 ...
是的。记住指针和它所指向的东西是完全不同的。局部变量在函数返回时就会释放, 但是在指针变量这个问题上, 这表示指针被释放, 而不是它所指向的对象。用 malloc() 分配的内存直到明确释放它之前都会保留在那里。一般地, 对于每一个 malloc() 都必须有个对应的free()调用。

c语言中,malloc和free是什么意思?
malloc是申请内存的,free是释放内存的。1、malloc一般用法:int *t=NULL;t=(int *)malloc(sizeof(int));也可以在sizeof前面加上一个'n*'这就成了一个动态分配数组的方法。2、free一般用法:int *t=NULL;t=(int *)malloc(sizeof(int));free(t);这样t所指的空间就被释放掉了。

malloc函数的用法C语言malloc函数的使用
。8、因为malloc函数的返回值是void*,而p是int*,所以要对返回值进行强制转换。9、再编写一些代码来判断一下malloc是否申请内存成功,接着按快捷键F5运行,查看输出结果,可以看到内存申请成功。10、最后,我们还要用free函数释放掉刚申请的内存,防止内存泄露,至此,整个代码编写完成。

循环语句中使用malloc, 也要free相应的次数吗
你确实需要释放的就free,不需要释放的就不需要free。像有的程序里面malloc申请的空间是程序后面一直要用的,不能free掉。

Malloc分配的内存一定要free掉吗
void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。2、函数的用法:其实这两个函数用起来倒不是很难,也就是malloc()之后觉得用够了就甩了它把它给free()了,举个简单例子:程序代码:\/\/ Code...char *Ptr = NULL...

相似回答