中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

溫州網(wǎng)站制作多少錢谷歌google 官網(wǎng)下載

溫州網(wǎng)站制作多少錢,谷歌google 官網(wǎng)下載,注冊(cè)公司100萬(wàn)要交多少錢,梅州住房和城鄉(xiāng)建設(shè)部網(wǎng)站博主介紹:程序喵大人 35- 資深C/C/Rust/Android/iOS客戶端開發(fā)10年大廠工作經(jīng)驗(yàn)嵌入式/人工智能/自動(dòng)駕駛/音視頻/游戲開發(fā)入門級(jí)選手《C20高級(jí)編程》《C23高級(jí)編程》等多本書籍著譯者更多原創(chuàng)精品文章,首發(fā)gzh,見文末👇&#x1f…

博主介紹:程序喵大人

  • 35- 資深C/C++/Rust/Android/iOS客戶端開發(fā)
  • 10年大廠工作經(jīng)驗(yàn)
  • 嵌入式/人工智能/自動(dòng)駕駛/音視頻/游戲開發(fā)入門級(jí)選手
  • 《C++20高級(jí)編程》《C++23高級(jí)編程》等多本書籍著譯者
  • 更多原創(chuàng)精品文章,首發(fā)gzh,見文末
  • 👇👇記得訂閱專欄,以防走丟👇👇
    😃C++基礎(chǔ)系列專欄
    😃C語(yǔ)言基礎(chǔ)系列
    😃C++大佬養(yǎng)成攻略

在C++編程中,內(nèi)存管理是一個(gè)至關(guān)重要的概念。

要深入理解內(nèi)存管理,我們肯定要了解堆內(nèi)存和棧內(nèi)存的基本概念、區(qū)別以及它們的動(dòng)態(tài)分配和釋放方法。還需要深入理解相關(guān)內(nèi)存分配函數(shù)malloc、calloc、realloc的用法。

基本概念理解

棧內(nèi)存

棧內(nèi)存是由編譯器自動(dòng)管理的內(nèi)存區(qū)域,用于存儲(chǔ)局部變量、函數(shù)參數(shù)和返回地址等。棧內(nèi)存的分配和釋放是自動(dòng)進(jìn)行的:

  • 當(dāng)函數(shù)被調(diào)用時(shí),局部變量和參數(shù)會(huì)被壓入棧中;
  • 當(dāng)函數(shù)返回時(shí),這些局部變量和參數(shù)會(huì)被彈出棧并釋放。

棧內(nèi)存具有快速分配和釋放的特點(diǎn),但其大小是固定的,一般也就8M左右,不能動(dòng)態(tài)調(diào)整。

堆內(nèi)存

堆內(nèi)存是由程序員手動(dòng)管理的內(nèi)存區(qū)域,用于動(dòng)態(tài)分配內(nèi)存。

你通過(guò)malloccalloc、realloc等函數(shù)可以在堆上分配內(nèi)存,通過(guò)free函數(shù)釋放內(nèi)存。

堆內(nèi)存的大小不固定,可以動(dòng)態(tài)調(diào)整,但需要程序員負(fù)責(zé)內(nèi)存的管理,容易出現(xiàn)內(nèi)存泄漏等問(wèn)題,我們常說(shuō)的內(nèi)存泄露問(wèn)題指的更多的就是堆內(nèi)存的泄露。

區(qū)別

  • 內(nèi)存****管理:棧內(nèi)存由編譯器自動(dòng)管理,堆內(nèi)存由程序員手動(dòng)管理。
  • 作用域:棧內(nèi)存的作用域通常是函數(shù)內(nèi)部,當(dāng)函數(shù)返回時(shí),棧內(nèi)存會(huì)自動(dòng)被釋放;堆內(nèi)存的作用域由程序員控制,只要程序員不釋放,內(nèi)存就會(huì)一直存在。
  • 生命周期:棧內(nèi)存的生命周期與函數(shù)執(zhí)行時(shí)間相關(guān),函數(shù)執(zhí)行完畢后,棧內(nèi)存會(huì)被釋放;堆內(nèi)存的生命周期由程序員控制,直到顯式調(diào)用free函數(shù)釋放內(nèi)存。

堆內(nèi)存的使用

使用malloc動(dòng)態(tài)分配空間

malloc函數(shù)用于在堆上分配指定大小的內(nèi)存塊。函數(shù)聲明形式為:

void* malloc(size_t size);
  • size:要分配的字節(jié)數(shù)。
  • 返回值:指向分配的內(nèi)存塊的指針,如果分配失敗,返回NULL。

示例代碼:

int* ptr = (int*)malloc(sizeof(int) * 10); // 分配10個(gè)int類型的內(nèi)存空間
if (ptr == NULL) {// 處理內(nèi)存分配失敗的情況
}

使用calloc分配并初始化內(nèi)存

calloc函數(shù)用于在堆上分配內(nèi)存并初始化為0。函數(shù)聲明形式為:

void* calloc(size_t num, size_t size);
  • num:要分配的元素個(gè)數(shù)。
  • size:每個(gè)元素的字節(jié)數(shù)。
  • 返回值:指向分配的內(nèi)存塊的指針,如果分配失敗,返回NULL

示例代碼:

int* ptr = (int*)calloc(10, sizeof(int)); // 分配10個(gè)int類型的內(nèi)存空間,并初始化為0
if (ptr == NULL) {// 處理內(nèi)存分配失敗的情況
}

使用realloc調(diào)整內(nèi)存大小

realloc函數(shù)用于調(diào)整已分配內(nèi)存塊的大小。函數(shù)聲明形式為:

void* realloc(void* ptr, size_t size);
  • ptr:指向要調(diào)整大小的內(nèi)存塊的指針。
  • size:新的內(nèi)存塊大小(字節(jié)數(shù))。
  • 返回值:指向新的內(nèi)存塊的指針,如果分配失敗,返回NULL,原內(nèi)存塊保持不變。

示例代碼:

int* ptr = (int*)malloc(sizeof(int) * 10); // 初始分配10個(gè)int類型的內(nèi)存空間
if (ptr == NULL) {// 處理內(nèi)存分配失敗的情況
}// 使用realloc調(diào)整內(nèi)存大小
ptr = (int*)realloc(ptr, sizeof(int) * 20);
if (ptr == NULL) {// 處理內(nèi)存調(diào)整失敗的情況,注意原內(nèi)存塊仍然有效
}

使用free釋放內(nèi)存

free函數(shù)用于釋放之前通過(guò)malloccallocrealloc分配的內(nèi)存空間。函數(shù)聲明形式為:

void free(void* ptr);
  • ptr:指向要釋放的內(nèi)存塊的指針。

示例代碼:

int* ptr = (int*)malloc(sizeof(int) * 10); // 分配10個(gè)int類型的內(nèi)存空間
if (ptr == NULL) {// 處理內(nèi)存分配失敗的情況
}// 使用內(nèi)存...free(ptr); // 釋放內(nèi)存
ptr = NULL; // 將指針置為NULL,避免懸掛指針

棧內(nèi)存與堆內(nèi)存的對(duì)比

編程實(shí)踐展示

以下示例展示了棧內(nèi)存和堆內(nèi)存的不同使用場(chǎng)景和特性:

#include <stdio.h>
#include <stdlib.h>void stackMemoryExample() {int stackVar = 10; // 棧內(nèi)存,函數(shù)返回時(shí)自動(dòng)釋放printf("Stack variable: %d\n", stackVar);
}void heapMemoryExample() {int* heapVar = (int*)malloc(sizeof(int)); // 堆內(nèi)存,需要手動(dòng)釋放if (heapVar == NULL) {fprintf(stderr, "Memory allocation failed\n");return;}*heapVar = 20;printf("Heap variable: %d\n", *heapVar);free(heapVar); // 釋放堆內(nèi)存heapVar = NULL; // 避免懸掛指針
}int main() {stackMemoryExample(); // 調(diào)用棧內(nèi)存示例函數(shù)heapMemoryExample();  // 調(diào)用堆內(nèi)存示例函數(shù)return 0;
}

其中

stackMemoryExample函數(shù)使用了棧內(nèi)存來(lái)存儲(chǔ)局部變量stackVar,當(dāng)函數(shù)返回時(shí),stackVar會(huì)自動(dòng)釋放。

heapMemoryExample函數(shù)則使用堆內(nèi)存來(lái)存儲(chǔ)變量heapVar,并通過(guò)malloc分配內(nèi)存,通過(guò)free釋放內(nèi)存。

練習(xí)

  1. 編寫一個(gè)程序,動(dòng)態(tài)分配一個(gè)整型數(shù)組的內(nèi)存空間,用于存儲(chǔ)用戶輸入的5個(gè)整數(shù),然后遍歷并打印這些整數(shù)。最后,釋放分配的內(nèi)存。
  2. 編寫一個(gè)程序,包含兩個(gè)函數(shù)。第一個(gè)函數(shù)使用棧內(nèi)存(局部變量)存儲(chǔ)并打印一個(gè)整數(shù)數(shù)組;第二個(gè)函數(shù)使用堆內(nèi)存動(dòng)態(tài)分配并存儲(chǔ)用戶輸入的整數(shù)數(shù)組,然后打印并釋放內(nèi)存。通過(guò)這兩個(gè)函數(shù)的調(diào)用,展示棧內(nèi)存和堆內(nèi)存在使用上的區(qū)別。

進(jìn)階

  1. 為什么malloc時(shí)候需要傳遞長(zhǎng)度信息,而free時(shí)候卻不需要傳遞長(zhǎng)度信息呢?會(huì)不會(huì)多釋放一些內(nèi)存或者少釋放了一些內(nèi)存?
  2. malloc更底層的原理是什么?一次malloc底層都經(jīng)歷了什么?
  3. 棧內(nèi)存和堆內(nèi)存的區(qū)別?
  4. 什么場(chǎng)景下使用棧,什么場(chǎng)景下使用堆呢?
  5. 棧數(shù)組下標(biāo)越界訪問(wèn)會(huì)發(fā)生什么?
  6. 什么是棧溢出?
  7. 了解下常見的棧攻擊手段。

碼字不易,歡迎大家點(diǎn)贊關(guān)注評(píng)論,謝謝!


C++訓(xùn)練營(yíng)

專為校招、社招3年工作經(jīng)驗(yàn)的同學(xué)打造的1V1 C++訓(xùn)練營(yíng),量身定制學(xué)習(xí)計(jì)劃、每日代碼review,簡(jiǎn)歷優(yōu)化,面試輔導(dǎo),已幫助多名學(xué)員獲得offer!訓(xùn)練營(yíng)介紹

http://www.risenshineclean.com/news/42742.html

相關(guān)文章:

  • 手機(jī)html5網(wǎng)站源碼廣告投放的方式有哪些
  • 深圳網(wǎng)站建設(shè)培訓(xùn)班深圳最新通告今天
  • 技術(shù)支持:淄博網(wǎng)站建設(shè)優(yōu)化設(shè)計(jì)三年級(jí)上冊(cè)語(yǔ)文答案
  • 山東省建設(shè)工程招標(biāo)中心網(wǎng)站當(dāng)日網(wǎng)站收錄查詢統(tǒng)計(jì)
  • 網(wǎng)站建設(shè)需求分析寫什么茶葉seo網(wǎng)站推廣與優(yōu)化方案
  • 網(wǎng)站程序組成seo搜狗排名點(diǎn)擊
  • 辛集seo網(wǎng)站優(yōu)化電話靠譜的免費(fèi)建站
  • 建立手機(jī)個(gè)人網(wǎng)站營(yíng)銷網(wǎng)站建設(shè)制作
  • 視頻資源的網(wǎng)站怎么做站長(zhǎng)資訊
  • 網(wǎng)站建設(shè)課程設(shè)計(jì)內(nèi)容淘寶店鋪轉(zhuǎn)讓價(jià)格表
  • wordpress評(píng)論框文件采集站seo課程
  • 自己做網(wǎng)站外包百度熱搜高考大數(shù)據(jù)
  • 企業(yè)做網(wǎng)站需要什么軟件百度品牌廣告收費(fèi)標(biāo)準(zhǔn)
  • 網(wǎng)站制作預(yù)付款會(huì)計(jì)分錄小程序運(yùn)營(yíng)推廣公司
  • 大慶網(wǎng)站制作營(yíng)銷策劃方案包括哪些內(nèi)容
  • 在百度做網(wǎng)站多少錢網(wǎng)站推廣營(yíng)銷
  • 網(wǎng)站站內(nèi)鏈接濰坊住房公積金管理中心
  • 設(shè)計(jì)網(wǎng)頁(yè)推薦萬(wàn)秀服務(wù)不錯(cuò)的seo推廣
  • 網(wǎng)站的功能和作用百度seo排名帝搜軟件
  • 寶雞哪有有做網(wǎng)站的專業(yè)網(wǎng)絡(luò)推廣公司
  • 網(wǎng)站開發(fā)的工作總結(jié)google搜索優(yōu)化方法
  • 怎么做賭博網(wǎng)站代理承德seo
  • html做網(wǎng)站實(shí)戰(zhàn)教程軟文寫作經(jīng)驗(yàn)是什么
  • 余姚物流做網(wǎng)站鄭州本地seo顧問(wèn)
  • 醫(yī)院網(wǎng)站建設(shè) 費(fèi)用百度認(rèn)證官網(wǎng)
  • 四川建設(shè)廳官方網(wǎng)站四庫(kù)一平臺(tái)網(wǎng)絡(luò)運(yùn)營(yíng)商
  • 建設(shè)銀行手機(jī)查詢網(wǎng)站合肥seo優(yōu)化排名公司
  • 在北京大學(xué)生做家教的網(wǎng)站關(guān)鍵詞調(diào)詞平臺(tái)哪個(gè)好
  • 東莞電商頁(yè)面設(shè)計(jì)公司福州短視頻seo機(jī)會(huì)
  • 杭州網(wǎng)站建設(shè)wguser域名歸屬查詢