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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

c语言遍历文件内容_C语言学习第28篇---动态内存分配剖析

發布時間:2025/3/11 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言遍历文件内容_C语言学习第28篇---动态内存分配剖析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么C語言要動態分配內存的意義?

1.C語言中的一切操作都是基于內存的

2.變量和數組都是內存的別名

---內存分配由編譯器在編譯期間決定的

---定義數組的時候必須指定數組長度

---數組長度是在編譯期就必須確定的

需求:程序運行的過程中,可能需要使用一些額外的內存空間

實際使用就是malloc和free函數

用于內存的分配和釋放

1.malloc所分配的是一塊連續的內存

2.malloc一字節為單位,并且不帶任何的類型信息

3.free用于將動態內存歸還系統

void* malloc(size_t size)

void free(void* pointer)

注意:

1.malloc和free是庫函數,不是系統調用

2.malloc實際分配的內存可能會比請求的多---有些編譯器分配時是以4字節為單元的

3.不能依賴于不同平臺的下的malloc

4.當請求的動態內存無法滿足時malloc返回的是NULL

5.當free的參數為NULL時,函數直接返回

思考一個問題:malloc*(0);返回值是什么?*(這也是一個面試題)

#include

引出一個問題,這里不停的malloc,但是不free會造成內存泄露嗎?

答案是會的,因為現代編譯器一般是分配的4個整數字節,也就是申請的是0。但是實際分配的可能是4

解決的方式是:高級語言的(Java,.net.python等都是有內存回收功能的)

不過嵌入式基本都是使用C語言的(我做無人機的時候使用的是c++),那就得解決

下邊是一個實際操作---內存泄露檢測模塊

gcc 38-1.c mleak.c (編譯需要的所有文件)

#include

怎么實現內存檢測的呢?

mleak.c函數

#include

mleak.h

#ifndef _MLEAK_H_

新概念

calloc和realloc

1.malloc的同胞兄弟

void* calloc(size_t num,size_t size);

void* realloc(void* pointer,size_t new_size);

2.calloc的參數代表所返回的內存的類型信息

---calloc會將=返回的內存初始化為0

3.realloc用于修改一個原先已經分配好的內存塊的大小

---在使用realloc之后應該使用期返回值

---當pointer的第一個參數時NULL時,等價于malloc

實例使用:

#include

小結:

1.動態分配內存是C語言的強大功能

2.程序能夠在需要的時候有機會使用更多的內存

3.malloc單純的從系統中申請固定字節大小的內存

4.calloc能以類型大小為單位申請內存并初始化為0

5.relloc用于重置內存大小

說明

1.該文檔僅供個人學習使用,版權所有,禁止商用。

2.本文由我一個人編輯并整理,難免存在一些錯誤。

3.為了方便大家平時公交、地鐵、外出辦事也能用手機隨時隨地查看該教程,該教程同步更新于微信公眾號『Allen5G』。

我的微信公眾號(ID:Allen5G)主要分享軟件工程師進階(嵌入式,Linux,C/C++,python,英語),程序員職業發展,如果想查看更多內容,可以關注我的微信公眾號『Allen5G』

總結

以上是生活随笔為你收集整理的c语言遍历文件内容_C语言学习第28篇---动态内存分配剖析的全部內容,希望文章能夠幫你解決所遇到的問題。

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