欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言動態(tài)內存管理介紹

 更新時間:2021年12月31日 09:10:30   作者:心在南  
大家好,本篇文章主要講的是C語言動態(tài)內存管理介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

前言:

簡單記錄一下,內存管理函數(shù)

為什么使用動態(tài)內存呢?
簡單理解就是可以最大限度調用內存
用多少生成多少,不用時就釋放而靜止內存不能釋放
動態(tài)可避免運行大程序導致內存溢出

C 語言為內存的分配和管理提供了幾個函數(shù):

頭文件:<stdlib.h>

注意:void * 類型表示未確定類型的指針?

1.malloc() 用法

?分配一塊大小為 num 的內存空間

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main() {
    char name[12];
    char *test;
 
    strcpy(name, "KiKiNiNi");
 
    // 動態(tài)分配內存
    test = (char *) malloc(26 * sizeof(char));
 
    // (void *) malloc(int num) -> num = 26 * sizeof(char)
    // void * 表示 未確定類型的指針
    // 分配了一塊內存空間 大小為 num 存放值是未知的
 
    if (test == NULL) {
        fprintf(stderr, "Error - unable to allocate required memory\n");
    } else {
        strcpy(test, "Maybe just like that!");
    }
 
    printf("Name = %s\n", name);
    printf("Test: %s\n", test);
 
    return 0;
}
 
// 運行結果
// Name = KiKiNiNi
// Test: Maybe just like that!

2.calloc() 用法

?分配 num 個長度為 size 的連續(xù)空間

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main() {
    char name[12];
    char *test;
 
    strcpy(name, "KiKiNiNi");
 
    // 動態(tài)分配內存
    test = (void *) calloc(26, sizeof(char));
 
    // (void *) calloc(int num, int size) -> num = 26 / size = sizeof(char)
    // void * 表示 未確定類型的指針
    // 分配了 num 個 大小為 size 的連續(xù)空間 存放值初始化為 0
 
    if (test == NULL) {
        fprintf(stderr, "Error - unable to allocate required memory\n");
    } else {
        strcpy(test, "Maybe just like that!");
    }
 
    printf("Name = %s\n", name);
    printf("Test: %s\n", test);
 
    return 0;
}
 
// 運行結果
// Name = KiKiNiNi
// Test: Maybe just like that!

3.realloc() 與 free() 用法

重新調整內存的大小和釋放內存

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main() {
    char name[12];
    char *test;
 
    strcpy(name, "KiKiNiNi");
 
    // 動態(tài)分配內存
    test = (char *) malloc(26 * sizeof(char));
 
    // (void *) malloc(int num) -> num = 26 * sizeof(char)
    // void * 表示 未確定類型的指針
    // 分配了一塊內存空間 大小為 num 存放值是未知的
 
    if (test == NULL) {
        fprintf(stderr, "Error - unable to allocate required memory\n");
    } else {
        strcpy(test, "Maybe just like that!");
    }
 
    /* 假設您想要存儲更大的描述信息 */
    test = (char *) realloc(test, 100 * sizeof(char));
    if (test == NULL) {
        fprintf(stderr, "Error - unable to allocate required memory\n");
    } else {
        strcat(test, " It's a habit to love her.");
    }
 
    printf("Name = %s\n", name);
    printf("Test: %s\n", test);
 
    // 釋放 test 內存空間
    free(test);
 
    return 0;
}
 
// 運行結果
// Name = KiKiNiNi
// Test: Maybe just like that! It's a habit to love her.

到此這篇關于C語言動態(tài)內存管理介紹的文章就介紹到這了,更多相關C語言動態(tài)內存內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++實例分析講解臨時對象與右值引用的用法

    C++實例分析講解臨時對象與右值引用的用法

    對性能來說,許多的問題都需要和出現(xiàn)頻率及本身執(zhí)行一次的開銷掛鉤,有些問題雖然看似比較開銷較大,但是很少會執(zhí)行到,那也不會對程序有大的影響;同樣一個很小開銷的函數(shù)執(zhí)行很頻繁,同樣會對程序的執(zhí)行效率有很大影響。本章中作者主要根據(jù)臨時對象來闡述這樣一個觀點
    2022-08-08
  • c異或運算 c異或運算符號

    c異或運算 c異或運算符號

    位運算的運算分量只能是整型或字符型數(shù)據(jù),位運算把運算對象看作是由二進位組成的位串信息,按位完成指定的運算,得到位串信息的結果
    2014-06-06
  • 關于嘗試開發(fā)PHP的MYSQL擴展的使用

    關于嘗試開發(fā)PHP的MYSQL擴展的使用

    本篇文章小編將為大家介紹,關于嘗試開發(fā)PHP的MYSQL擴展的使用,需要的朋友可以參考一下
    2013-04-04
  • 劍指offer之判斷鏈表是否包含環(huán)

    劍指offer之判斷鏈表是否包含環(huán)

    今天小編就為大家分享一篇關于劍指offer之判斷鏈表是否包含環(huán),小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 詳解C語言的隨機數(shù)生成及其相關題目

    詳解C語言的隨機數(shù)生成及其相關題目

    這篇文章主要介紹了詳解C語言的隨機數(shù)生成及其相關題目,作者還列舉了阿里巴巴的一道相關的面試題,需要的朋友可以參考下
    2015-08-08
  • Linux下C語言實現(xiàn)貪吃蛇小游戲

    Linux下C語言實現(xiàn)貪吃蛇小游戲

    這篇文章主要為大家詳細介紹了Linux下C語言實現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • C++  數(shù)據(jù)結構鏈表的實現(xiàn)代碼

    C++ 數(shù)據(jù)結構鏈表的實現(xiàn)代碼

    這篇文章主要介紹了C++ 數(shù)據(jù)結構鏈表的實現(xiàn)代碼的相關資料,需要的朋友可以參考下
    2017-01-01
  • java string對象上的操作,常見的用法你知道嗎

    java string對象上的操作,常見的用法你知道嗎

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著Java String類用法展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-08-08
  • C/C++實現(xiàn)三路快速排序算法原理

    C/C++實現(xiàn)三路快速排序算法原理

    這篇文章主要為大家詳細介紹了C/C++實現(xiàn)三路快速排序算法原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 基于errno返回值的對應錯誤碼的詳細介紹

    基于errno返回值的對應錯誤碼的詳細介紹

    本篇文章是對errno返回值的對應錯誤碼進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論