一江春水向東流

          做一個有思想的人,期待與每一位熱愛思考的人交流,您的關注是對我最大的支持。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            44 隨筆 :: 139 文章 :: 81 評論 :: 0 Trackbacks

          一個關于動態二維數組分配內存的問題,以前也有做遇見過這樣的,今天在網上參考了一個可以分配任意類型的示例,寫了一個僅分配整型的二維數組小測試程序,在VC++6.0上測試通過

          int **AllocMatrix ( int iRow, int iCol )
          void FreeMatrix ( int** p )

          示例程序:

          ?

          #include? < stdio.h >
          #include?
          < stdlib.h >
          #include?
          < string .h >
          //////////////////////////////////////////////////////////// //
          void ?FreeMatrix( int ? ** p);
          int ** ?AllocMatrix( int ?iRow,? int ?iCol);

          int ? ** AllocMatrix( int ?iRow,? int ?iCol)
          {
          ????
          int ** ?tdarray? = ?NULL;
          ????
          int * ?tmparray? = ?NULL;
          ????
          int ?i? = ? 0 ;
          ????
          // allocate?pointer?array
          ???? if ( ! (tdarray? = ?( int ** )malloc( sizeof ( char * ) * iRow)))
          ????
          {
          ????????printf(
          " allocate?iRow?wrong\n " );
          ????????exit(
          1 );
          ????}

          ????
          // allocate?actual?array?space
          ???? if ( ! (tmparray? = ?( int * )malloc( sizeof ( int ) * (iRow? * ?iCol))))
          ????
          {
          ????????FreeMatrix(tdarray);
          ????????printf(
          " allocate?iRow?wrong\n " );
          ????????exit(
          1 );
          ????}

          ????
          // initialize?memory
          ????memset(tmparray,? 0x00 ,? sizeof ( int ) * (iRow? * ?iCol));
          ????
          // evaluate?the?pointer?array
          ???? for (i = 0 ;?i < iRow;?i ++ )
          ????????tdarray[i]?
          = ?(tmparray? + ?(i * ?iCol) * sizeof ( int ));
          ????
          return ?tdarray;
          }


          void ?FreeMatrix( int ? ** p)
          {
          ????
          if (p)
          ????
          {
          ????????free(p[
          0 ]);
          ????????free(p);
          ????}

          }


          void ?main( void )
          {
          ????
          int ? ** arr? = ?AllocMatrix( 2 , 2 );
          ????arr[
          1 ][ 1 ]? = ? 1 ;
          ????arr[
          0 ][ 1 ]? = ? 4 ;
          ????printf(
          " %d,?%d?\n " ,arr[ 1 ][ 1 ],?arr[ 0 ][ 1 ]);
          ????FreeMatrix(arr);
          }

          ?

          posted on 2007-04-14 10:01 allic 閱讀(813) 評論(0)  編輯  收藏 所屬分類: C/C++
          主站蜘蛛池模板: 定州市| 朝阳县| 凤山市| 商城县| 瓮安县| 衢州市| 临澧县| 黄浦区| 呈贡县| 荃湾区| 唐海县| 肇东市| 宣威市| 景洪市| 龙州县| 福州市| 莱阳市| 秦皇岛市| 广德县| 兴安盟| 永安市| 彩票| 聊城市| 泰顺县| 伊吾县| 大同市| 潞西市| 滨海县| 保亭| 建平县| 东平县| 佛山市| 黄骅市| 婺源县| 衡山县| 平武县| 邻水| 潮州市| 隆子县| 涪陵区| 凌云县|