一江春水向東流

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

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

          三個函數的申明分別是:
          void* realloc(void* ptr, unsigned newsize);
          void* malloc(unsigned size);
          void* calloc(size_t nelem, size_t elsize);
          都在stdlib.h函數庫內

          它們的返回值都是請求系統分配的地址,如果請求失敗就返回NULL

          malloc用于申請一段新的地址,參數size為需要內存空間的長度,如:
          char* p;
          p=(char*)malloc(20);

          callocmalloc相似,參數nelem為申請地址的單位元素長度,elsize為元素個數,如:
          char* p;
          p=(char*)calloc(sizeof(char),20);
          這個例子與上一個效果相同

          realloc是給一個已經分配了地址的指針重新分配空間,參數ptr為原有的空間地址,newsize是重新申請的地址長度
          如:
          char* p;
          p=(char*)malloc(sizeof(char)*20);
          p=(char*)realloc(p,sizeof(char)*40);

          注意,這里的空間長度都是以字節為單位。

          C語言的標準內存分配函數:malloccalloc,realloc,free等。
          malloccalloc的區別為1塊與n塊的區別:
          malloc調用形式為(類型*)malloc(size):在內存的動態存儲區中分配一塊長度為“size”字節的連續區域,返回該區域的首地址。
          calloc調用形式為(類型*)calloc(n,size):在內存的動態存儲區中分配n塊長度為“size”字節的連續區域,返回首地址。
          realloc調用形式為(類型*)realloc(*ptr,size):將ptr內存大小增大到size。
          free的調用形式為free(void*ptr):釋放ptr所指向的一塊內存空間。
          C++中為new/delete函數。

          posted on 2008-02-15 22:01 allic 閱讀(392) 評論(0)  編輯  收藏 所屬分類: C/C++
          主站蜘蛛池模板: 广元市| 甘孜县| 长治市| 罗定市| 绥棱县| 兴文县| 耒阳市| 邢台市| 武冈市| 祁东县| 怀安县| 襄汾县| 漳平市| 开封市| 桂平市| 宜昌市| 会泽县| 苍山县| 龙岩市| 长乐市| 睢宁县| 永宁县| 浪卡子县| 阿勒泰市| 宁南县| 抚宁县| 四会市| 山东省| 贵定县| 江阴市| 大新县| 无极县| 诏安县| 佛冈县| 肇东市| 安化县| 鹤峰县| 息烽县| 佛坪县| 佛学| 西宁市|