malloc()动态分配内存的使用及其注意事项
来源:互联网 发布:南通大学网络教育 编辑:程序博客网 时间:2024/05/09 06:29
#include <stdio.h> #include <malloc.h> void main(){int a[5]={4,5,2,8,6};int len;printf("请输入你需要分配的数组的长度,len=");scanf("%d",&len); int* pArr=(int*)malloc(sizeof(int)*len); *pArr=4;//类似于a[0]=4 pArr[1]=9;//类似于a[1]=9 printf("%d %d\n",*pArr,*(pArr+1)); //或者自动赋值 int i; for(i=0;i<len;i++){ scanf("%d",&pArr[i]); } for(i=0;i<len;i++){ printf("%d ",*(pArr+i)); } free(pArr);//把pArr所代表的动态分配的20个字节的内存释放 }
#include <stdio.h>#include <malloc.h>void f(int * q){*q=5;//free(q); 如果这里加上free的话,那么会使main方法中的p变量所指向的空间不存在,//那么所获得结果会是错误的,在c-free运行的结果是0 //因为变量p所指向的空间是动态的,那么也就可以进行动态的释放 } void main(){ int* p=(int *)malloc(sizeof(int)); *p=10; printf("%d\n",*p);//10 f(p);printf("%d\n",*p); //如果f()中的free注释掉 结果为:5 否则结果为0 }