回复 楼主 xx3845182
首先告诉楼主,内存中有堆区和栈区两种,堆区是静态区,存储在里面的数据的生存期一般是整个程序的运行时间,而栈区是动态区,存储在其中的数据一般是动态的局部变量。
我们动态申请的内存是在静态即堆区里的,它并不会因为某个函数运行完了而自动释放,也不会因为主函数的结束而释放,但是一旦主函数结束了,而你没有在之前释放申请得到的空间,那么这片内存没有还给操作系统,数据也还在,但是它的指针(变量)已经消亡,我们也就无法访问这片内存了,这就造成了内存泄露。如果是一个大的程序连续出现内存泄露,那么很快内存就会耗尽,这是很危险的。
所以切记,malloc和free是成对出现的。
以下是一个例子:
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *n;
n=(int*)malloc(sizeof(int));
printf("请输入一个整数:");
scanf("%d",n);
printf("%d\n",*n);
getchar();
free(n);
return 1;
}
还可以动态申请数组空间。你看看课本里头有详细的说明。
[
本帖最后由 南国利剑 于 2010-5-4 12:58 编辑 ]