动态内存分配

动态内存分配和释放(动态分配的内存一定要手动释放,否则造成内存泄露.

  

  (java中A aa = new A();其实就是 A *p = (A *)malloc(sizeof(A)))

 

   病毒就是靠访问正在运行的那些程序所占用的内存。Java中规定局部变量必须初始化,因为这些变量一开始都是垃圾值,但是属性不是必须初始化的,因为已经默认初始化为0)

 

# include <stdio.h>
# include <malloc.h>

int main(void)
{
    //静态数组
    int a[5] = {4, 10, 2, 8, 6};
    
    int len;
    printf("请输入你需要分配的数组的长度: len = ");
    scanf("%d", &len);
    
    
    /**
     malloc:
        向系统申请一块内存
     malloc(sizeof(int) * len):
        int类型的占4个字节,申请一块4*len长度的内存,然后将这块内存的首地址返回
     (int *)malloc(sizeof(int) * len):
        因为首地址没有意义,int类型的为4个字节,double的为8个字节,强转为(int*)类型,4个字节分割
     
     */
    //动态数组.可以动态扩展数组,手动释放
    int * pArr = (int *)malloc(sizeof(int) * len);
    
//    *pArr = 4;  //类似于 a[0] = 4;
//    pArr[1] = 10; //类似于a[1] = 10;
//    printf("%d %d\n", *pArr, pArr[1]);

    //我们可以把pArr当做一个普通数组来使用
    for (int i=0; i<len; ++i)
        scanf("%d", &pArr[i]);

    for (i=0; i<len; ++i)
        printf("%d\n", *(pArr+i));

    
    free(pArr);  //把pArr所代表的动态分配的20个字节的内存释放

    return 0;
}

 

posted on 2018-12-17 19:52  JieFangZhe  阅读(134)  评论(0)    收藏  举报

导航