一江春水向東流

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

            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 閱讀(397) 評論(0)  編輯  收藏 所屬分類: C/C++
          主站蜘蛛池模板: 来安县| 江孜县| 通化县| 藁城市| 富源县| 台湾省| 辉县市| 茂名市| 兰坪| 光泽县| 高密市| 兴文县| 海南省| 江油市| 民勤县| 织金县| 罗甸县| 唐河县| 镇赉县| 哈巴河县| 博野县| 满城县| 崇左市| 永和县| 柯坪县| 桐柏县| 义乌市| 尼勒克县| 南城县| 大化| 桦川县| 屏东县| 沂南县| 山东| 望江县| 鹤庆县| 吴桥县| 青州市| 沙坪坝区| 叶城县| 天峻县|