日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言-动态内存分配总结

發布時間:2025/6/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言-动态内存分配总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1 malloc
  • 2 calloc
    • 區別聯系
  • 3 memset
  • 4 realloc

1 malloc

void *malloc( unsigned int num_bytes)

分配長度為num_bytes個字節的內存塊,返回值為無類型指針,該指針指向所分配內存塊的起始位置,因此利用該無類型指針賦值給其他類型的指針的時候,需要進行強制類型轉換。

int *p = (int *)malloc(sizeof(int) * 20);

當內存分配失敗時,返回空指針NULL。在使用malloc 分配內存之后,進行NULL判斷是一個良好的編程習慣。

2 calloc

void *calloc( unsigned int num, unsigned int size)

在內存的動態存儲區分配num個長度為size的存儲塊,返回指向該存儲塊起始地址的無類型指針,若返回失敗,返回NULL。因此,同樣需要對該函數返回值進行判斷。

int *p = (int *)calloc(20, sizeof(int));

區別聯系

  • calloc與malloc的一個相同點在于使用之后均需要free(指針),釋放內存塊。
  • 不同點在于calloc分配內存之后,會自動將這一塊的內存之初始化為0,而malloc則不會,分配內存的值為一些垃圾數值。因此,在使用malloc函數之后,我們一般要調用函數memset對內存進行初始化。

3 memset

void *memset(void *s, int ch, unsigned int size)

將s所指向的內存塊的前size個字節全部設置為ch對應的ASCii值。 它是對較大數組或者結構體清零操作的最快方式。

memset(p, 0, 80);

4 realloc

void *realloc (void *p, unsigned int size);

如果已經通過malloc或者calloc獲得了動態空間,想改變其大小,可以使用realloc函數重新分配,將p所指的動態空間大小改變為size,而p的值不變,如果重新分配不成功,返回NULL。原來空間的內容會保留。

總結

以上是生活随笔為你收集整理的C语言-动态内存分配总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。