malloc()动态分配内存的使用及其注意事项

来源:互联网 发布:乌云镜像 知乎 编辑:程序博客网 时间:2024/05/19 12:24
  1.  #include <stdio.h>  
  2.  #include <malloc.h>   
  3. void main(){  
  4.     int a[5]={4,5,2,8,6};  
  5.     int len;  
  6.     printf("请输入你需要分配的数组的长度,len=");  
  7.     scanf("%d",&len);   
  8.     int* pArr=(int*)malloc(sizeof(int)*len);   
  9.     *pArr=4;//类似于a[0]=4   
  10.     pArr[1]=9;//类似于a[1]=9   
  11.     printf("%d %d\n",*pArr,*(pArr+1));   
  12.       
  13.     //或者自动赋值   
  14.     int i;   
  15.      for(i=0;i<len;i++){  
  16.         scanf("%d",&pArr[i]);   
  17.      }   
  18.      for(i=0;i<len;i++){  
  19.         printf("%d ",*(pArr+i));   
  20.      }   
  21.      free(pArr);//把pArr所代表的动态分配的20个字节的内存释放   
  22. }   


[cpp] view plain copy
print?
  1. #include <stdio.h>  
  2. #include <malloc.h>  
  3. void f(int * q){  
  4.     *q=5;  
  5.     //free(q); 如果这里加上free的话,那么会使main方法中的p变量所指向的空间不存在,  
  6.     //那么所获得结果会是错误的,在c-free运行的结果是0   
  7.     //因为变量p所指向的空间是动态的,那么也就可以进行动态的释放   
  8. }   
  9. void main(){  
  10.     int* p=(int *)malloc(sizeof(int));  
  11.     *p=10;   
  12.     printf("%d\n",*p);//10   
  13.     f(p);  
  14.     printf("%d\n",*p); //如果f()中的free注释掉 结果为:5 否则结果为0   
  15. }   
0 0
原创粉丝点击