欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么在C語言中使用free函數(shù)

這篇文章給大家介紹怎么在C語言中使用free函數(shù),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)公司自2013年起,先為常德等服務(wù)建站,常德等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為常德企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

free函數(shù)與malloc()函數(shù)配對使用,釋放malloc函數(shù)申請的動(dòng)態(tài)內(nèi)存。對于free(p)這句語句,如果p 是NULL 指針,那么free 對p 無論操作多少次都不會(huì)出問題。如果p 不是NULL 指針,那么free 對p連續(xù)操作兩次就會(huì)導(dǎo)致程序運(yùn)行錯(cuò)誤。

#include <stdio.h>
#include <stdlib.h>

int main()
{
  char * name = NULL;
  free(name);
  free(name);
  free(name);
  
  printf("no problem11111111\n");

  name = (char *) malloc(10);
  if(name)
  {
    printf("allocate successful\n");
  }
  else
  {
    printf("allocate failed\n");
  }

  free(name);
  free(name);
  
  printf("no problem2222222\n");

  return 0;
}

運(yùn)行結(jié)果:

怎么在C語言中使用free函數(shù)

這個(gè)程序正好驗(yàn)證了上面的注意事項(xiàng)。

為了避免出現(xiàn)這個(gè)錯(cuò)誤,自己寫了一個(gè)函數(shù):

void myfree(void ** point)
{
  if(*point != NULL)
  {
    free(*point);
    *point = NULL;
  }
}

這個(gè)函數(shù)將一級(jí)指針的地址作為菜蔬傳入,這樣就可以對一級(jí)指針進(jìn)行操作。每次用free釋放完空間,都將一級(jí)指針置為NULL,這樣就避免了重復(fù)釋放時(shí)程序崩潰。

將這個(gè)函數(shù)應(yīng)用到剛才的程序中就是:

#include <stdio.h>
#include <stdlib.h>


void myfree(void ** point)
{
  if(*point != NULL)
  {
    free(*point);
    *point = NULL;
  }
}


int main()
{
  char * name = NULL;
  
  myfree((void**)&name);
  myfree((void**)&name);
  myfree((void**)&name);
  
  printf("no problem11111111\n");

  name = (char *) malloc(10);
  if(name)
  {
    printf("allocate successful\n");
    printf("地址為: %p\n",name);

  }
  else
  {
    printf("allocate failed\n");
  }

  myfree((void**)&name);
  myfree((void**)&name);
  
  printf("no problem2222222\n");

  return 0;
}

怎么在C語言中使用free函數(shù)

 可以發(fā)現(xiàn)程序已經(jīng)沒有錯(cuò)誤。

但是還有一個(gè)問題需要處理: 每次調(diào)用myfree函數(shù)的時(shí)候都需要取一級(jí)指針的地址而且需要強(qiáng)制類型轉(zhuǎn)換成void** ,也就是每次都要寫(void**)&point,這樣很麻煩。

其實(shí)我們可以用帶參數(shù)的宏定義來簡化代碼,宏定義如下:

#define FREE(p) myfree((void **)&p)

 應(yīng)用宏定義后的完整代碼:

#include <stdio.h>
#include <stdlib.h>


#define FREE(p) myfree((void **)&p)


void myfree(void ** point)
{
  if(*point != NULL)
  {
    free(*point);
    *point = NULL;
  }
}


int main()
{
  char * name = NULL;
  
  FREE(name);
  FREE(name);
  FREE(name);
  
  printf("no problem11111111\n");

  name = (char *) malloc(10);
  if(name)
  {
    printf("allocate successful\n");
    printf("地址為: %p\n",name);

  }
  else
  {
    printf("allocate failed\n");
  }

  FREE(name);
  FREE(name);
  
  printf("no problem2222222\n");

  return 0;
}

關(guān)于怎么在C語言中使用free函數(shù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

本文題目:怎么在C語言中使用free函數(shù)
文章轉(zhuǎn)載:http://chinadenli.net/article0/ghoooo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)軟件開發(fā)、虛擬主機(jī)App開發(fā)、標(biāo)簽優(yōu)化網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
玩弄人妻少妇一区二区桃花| 中字幕一区二区三区久久蜜桃| 蜜桃传媒视频麻豆第一区| 99少妇偷拍视频在线| 免费大片黄在线观看日本| 色老汉在线视频免费亚欧| 好骚国产99在线中文| 国产精品国三级国产专不卡| 老司机激情五月天在线不卡| 欧美精品专区一区二区| 厕所偷拍一区二区三区视频| 日本一级特黄大片国产| 欧美胖熟妇一区二区三区| 亚洲美女国产精品久久| 国产日韩欧美国产欧美日韩| 亚洲av日韩av高潮无打码| 在线免费国产一区二区| 日韩欧美一区二区不卡看片| 日本少妇aa特黄大片| 欧美尤物在线观看西比尔| 久久香蕉综合网精品视频| 欧美日韩精品视频在线| 亚洲中文在线中文字幕91| 91人妻人人揉人人澡人| 91麻豆视频国产一区二区| 激情五月综五月综合网| 国产精品白丝一区二区| 久久国产亚洲精品成人| 欧美一级特黄特色大色大片| 欧美国产日产在线观看| 国产成人精品99在线观看| 欧美乱码精品一区二区三| 国产麻豆视频一二三区| 久久99亚洲小姐精品综合| 日韩欧美国产高清在线| 办公室丝袜高跟秘书国产| 中文字幕无线码一区欧美| 精品人妻一区二区四区| 日本高清视频在线播放| 欧美丰满人妻少妇精品| 精品国产91亚洲一区二区三区|