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 } 


原创粉丝点击