free真的释放内存了吗?
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p;
p=(int *)malloc(sizeof(int));
*p=2;
printf("%d,%p\n",*p,p);
free(p);
printf("%d,%p\n",*p,p);
*p=1;
printf("%d,%p\n",*p,p);
return 0;
}
结果为:
在MinGW Developer Studio中:
2,003E3BE8
0,003E3BE8
1,003E3BE8
在VC6.0中:
2,00380FE0
-572662307,00380FE0
1,00380FE0
问题是:为什么用free函数释放了内存后,仍能对*p赋值?并且运行时也没发生错误?
...全文
相关推荐
C语言中多维数组的内存分配和释放(malloc与free)的方法
如果要给二维数组(m*n)分配空间,代码可以写成下面: 代码如下:char **a, i; // 先分配m个指针单元,注意是指针单元 // 所以每个单元的大小是sizeof(char *) a = (char **) malloc(m * sizeof(char * )); // 再分配n个字符单元, // 上面的m个指针单元指向这n个字符单元首地址 for(i = 0; i < m; i++) a[i] = (char * )malloc(n * sizeof(char )); 释放应该是: 代码如下:int i; for(i=0;i<m;i++) free((void *)a[i
linux 内存清理/释放命令总结
本篇文章主要介绍了linux 内存清理/释放命令,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
linux下释放cache内存
当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题
让free后立即释放内存
free并不释放内存,要等. 如何free后立即释放内存呢
Linux下手动释放内存
通过命令手动释放内存,然后可以查看内存使用情况


