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

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

溫州網(wǎng)站制作多少錢(qián)全網(wǎng)營(yíng)銷(xiāo)公司

溫州網(wǎng)站制作多少錢(qián),全網(wǎng)營(yíng)銷(xiāo)公司,做電影網(wǎng)站放搶先版,沈陽(yáng)健網(wǎng)站博主介紹:程序喵大人 35- 資深C/C/Rust/Android/iOS客戶(hù)端開(kāi)發(fā)10年大廠工作經(jīng)驗(yàn)嵌入式/人工智能/自動(dòng)駕駛/音視頻/游戲開(kāi)發(fā)入門(mén)級(jí)選手《C20高級(jí)編程》《C23高級(jí)編程》等多本書(shū)籍著譯者更多原創(chuàng)精品文章,首發(fā)gzh,見(jiàn)文末👇&#x1f…

博主介紹:程序喵大人

  • 35- 資深C/C++/Rust/Android/iOS客戶(hù)端開(kāi)發(fā)
  • 10年大廠工作經(jīng)驗(yàn)
  • 嵌入式/人工智能/自動(dòng)駕駛/音視頻/游戲開(kāi)發(fā)入門(mén)級(jí)選手
  • 《C++20高級(jí)編程》《C++23高級(jí)編程》等多本書(shū)籍著譯者
  • 更多原創(chuàng)精品文章,首發(fā)gzh,見(jiàn)文末
  • 👇👇記得訂閱專(zhuān)欄,以防走丟👇👇
    😃C++基礎(chǔ)系列專(zhuān)欄
    😃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、callocrealloc的用法。

基本概念理解

棧內(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ò)malloc、calloc、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類(lèi)型的內(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類(lèi)型的內(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類(lèi)型的內(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ò)malloc、callocrealloc分配的內(nèi)存空間。函數(shù)聲明形式為:

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

示例代碼:

int* ptr = (int*)malloc(sizeof(int) * 10); // 分配10個(gè)int類(lèi)型的內(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. 編寫(xiě)一個(gè)程序,動(dòng)態(tài)分配一個(gè)整型數(shù)組的內(nèi)存空間,用于存儲(chǔ)用戶(hù)輸入的5個(gè)整數(shù),然后遍歷并打印這些整數(shù)。最后,釋放分配的內(nèi)存。
  2. 編寫(xiě)一個(gè)程序,包含兩個(gè)函數(shù)。第一個(gè)函數(shù)使用棧內(nèi)存(局部變量)存儲(chǔ)并打印一個(gè)整數(shù)數(shù)組;第二個(gè)函數(shù)使用堆內(nèi)存動(dòng)態(tài)分配并存儲(chǔ)用戶(hù)輸入的整數(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. 了解下常見(jiàn)的棧攻擊手段。

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


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

專(zhuān)為校招、社招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/42357.html

相關(guān)文章:

  • 網(wǎng)站備案 godaddyseo公司上海牛巨微
  • 公司網(wǎng)站建設(shè)費(fèi)屬于什么費(fèi)用網(wǎng)站服務(wù)器是什么意思
  • 做返利網(wǎng)站怎麼網(wǎng)絡(luò)推廣費(fèi)用預(yù)算表
  • 大連在哪個(gè)網(wǎng)站做網(wǎng)上核名鄭州seo公司哪家好
  • 技術(shù)支持:淄博網(wǎng)站建設(shè)濰坊自動(dòng)seo
  • 線(xiàn)上推廣方法有哪些長(zhǎng)沙網(wǎng)站seo報(bào)價(jià)
  • 期貨做程序化回測(cè)的網(wǎng)站網(wǎng)站網(wǎng)絡(luò)排名優(yōu)化方法
  • 建設(shè)綜合信息網(wǎng)站需要多少錢(qián)如何廣告推廣
  • 國(guó)產(chǎn)一級(jí)a做爰片免費(fèi)網(wǎng)站哪個(gè)網(wǎng)站是免費(fèi)的
  • 網(wǎng)絡(luò)營(yíng)銷(xiāo)模式包括哪些seo網(wǎng)站關(guān)鍵詞快速排名
  • 做網(wǎng)站放太多視頻seo項(xiàng)目分析
  • 十堰網(wǎng)站seo方法百度seo關(guān)鍵詞優(yōu)化公司
  • 做公司網(wǎng)站一般多少錢(qián)免費(fèi)軟件下載網(wǎng)站有哪些
  • 集團(tuán)網(wǎng)站建設(shè)方案書(shū)游戲推廣員是違法的嗎
  • 軟件開(kāi)發(fā)步驟流程鄭州見(jiàn)效果付費(fèi)優(yōu)化公司
  • 廈門(mén) 微網(wǎng)站制作企業(yè)推廣策劃書(shū)
  • 做寵物食品的網(wǎng)站優(yōu)化落實(shí)疫情防控新十條
  • 上傳了網(wǎng)站源碼怎么做新聞最新熱點(diǎn)
  • 桓臺(tái)網(wǎng)站開(kāi)發(fā)廣州:推動(dòng)優(yōu)化防控措施落地
  • 中國(guó)互聯(lián)網(wǎng)網(wǎng)站性能丈哥seo博客工具
  • 錦州網(wǎng)站建設(shè)多少錢(qián)網(wǎng)站排名掉了怎么恢復(fù)
  • wordpress 地址 .html臺(tái)州seo
  • 別人抄襲網(wǎng)站設(shè)計(jì)怎么辦設(shè)計(jì)師必備的6個(gè)網(wǎng)站
  • 尋花問(wèn)柳一家專(zhuān)注做男人喜愛(ài)的網(wǎng)站什么網(wǎng)站推廣比較好
  • 諸城盟族網(wǎng)站建設(shè)北京做網(wǎng)站公司哪家好
  • 網(wǎng)上營(yíng)銷(xiāo)活動(dòng)長(zhǎng)沙網(wǎng)站seo分析
  • 學(xué)校校園網(wǎng)站建設(shè)方案上海網(wǎng)站營(yíng)銷(xiāo)seo方案
  • 做圖片的網(wǎng)站外貿(mào)建站
  • 網(wǎng)站開(kāi)發(fā)研究背景域名搜索
  • 做網(wǎng)站 警察佛山抖音seo