zoukankan      html  css  js  c++  java
  • 使用内存管理函数实现动态数组

    C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间,也可把不再使用的空间释放,为有效地使用内存资源提供了手段。

    动态数组,指的就是利用内存的申请和释放函数,在程序的运行过程中,根据实际需要指定数组的大小。其本质就是一个指向数组的指针变量。

    主要用到的内存管理函数是:malloc和free。

    1、分配内存函数malloc:

    调用形式:(类型说明符*)malloc(size);

    功     能:在内存的动态存储区中分配一块长度为size字节的连续区域。

    返     回:该区域的首地址。

    “类型说明符”表示把该区域用于何种数据类型。

    “(类型说明符*)”表示把返回值强制转换为该类型指针。

    “size”是一个无符号数。

    例如,pc = (char *)malloc(100);表示分配100个字节的内存空间,并强制转换为字符数组类型,函数的返回值为指向该字符数组的指针。

    2、释放内存空间函数free:

    调用形式:free(void *ptr);

    功     能:释放ptr所指向的一块内存空间。ptr是一个任意类型的指针变量,它指向被释放区域的首地址。

     

    实现一维动态数组程序框架:

    int num;   //要创建一个大小为num的一维数组,num由用户输入或其他方式获得

    int *array;   //创建一维指针来指向一维数组

    array = (int *)malloc(sizeof(int) * num);   //动态创建一个大小为num的整形一维数组

    if(array == NULL)

    {

             printf(“out of memory, press any key to quit… ”);

             exit(0);
         }

    …   //使用动态数组

    free(array);   //释放由malloc申请的内存空间

     

    实现二维动态数组程序框架:

    int i;

    int row, col;   //要动态创建一个行数为row,列数为col的二维数组,row和col由用户输入或其他方式获得

    int **array;   //创建二维指针来指向二维数组

    array = (int **)malloc(sizeof(int *) * row);    //动态创建一个大小为row×col的整形二维数组

    for(i=0; i<row; i++)

    {

             array[i] = (int *)malloc(sizeof(int) * col);
         }

    …   //使用动态数组

    for(i=0; i<row; i++)

    {

             free(array[i]);   //先释放一维指针

    }

    free(array);   //最后释放二维指针

  • 相关阅读:
    JAVA 单例模式
    CodeForces Round #563 Div.2
    拓扑排序 JAVA
    初识 Dubbo
    CodeForces Round #567 Div.2
    Educational Codeforces Round 65 (Rated for Div. 2)
    最短路径问题
    C++使用fixed和precision控制小数和有效位数的输出以及setw()设置输出宽度
    poj3684(弹性碰撞模型)
    集合的整数表示
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3870136.html
Copyright © 2011-2022 走看看