一江春水向東流

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

            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++
          主站蜘蛛池模板: 自治县| 夏邑县| 高州市| 巴彦县| 晋江市| 故城县| 贵州省| 连山| 瑞金市| 通道| 四子王旗| 南召县| 和顺县| 天长市| 荆州市| 桂林市| 张家界市| 临猗县| 博乐市| 塔城市| 遂宁市| 剑阁县| 松潘县| 黄石市| 沧源| 景洪市| 游戏| 乌审旗| 灵山县| 夏津县| 敦煌市| 武功县| 抚顺县| 吴堡县| 习水县| 道孚县| 辰溪县| 天等县| 苍梧县| 西和县| 灵台县|