国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Linux雜貨鋪】進(jìn)程的基本概念

這篇具有很好參考價值的文章主要介紹了【Linux雜貨鋪】進(jìn)程的基本概念。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記


目錄

??前言??

??進(jìn)程的概念

??描述進(jìn)程-PCB

???查看進(jìn)程

?? 查看正在運行的程序

??殺死進(jìn)程

??通過系統(tǒng)調(diào)用獲取進(jìn)程標(biāo)識符

??通過系統(tǒng)調(diào)用創(chuàng)建進(jìn)程

?? 進(jìn)程的特點

??進(jìn)程的狀態(tài)

?? kill 信號

?? 僵尸進(jìn)程?

?? 孤兒進(jìn)程

?? 運行狀態(tài)

?? 阻塞狀態(tài)

?? 掛起狀態(tài)

??進(jìn)程的切換

??進(jìn)程的優(yōu)先級

?? 概念

?? 原則

?? 查看方式

?? PRI 和 NI

?? 調(diào)整方式

?? 進(jìn)程的地址空間 (虛擬地址)

?? 虛擬地址的好處

?? Linux2.6 內(nèi)核進(jìn)程調(diào)度隊列?編輯

?? 活動隊列

??? 過期隊列

??active指針和expired指針

??總結(jié)


??前言??

? ? ? ? 歡迎觀看本期【Linux雜貨鋪】,本期內(nèi)容,將講解操作系統(tǒng)中重要的概念——進(jìn)程。本篇文章將講解操作系統(tǒng)關(guān)于進(jìn)程的通用知識,以及在Linux中如何組織管理進(jìn)程,以及運行進(jìn)程。

? ? ? ? 如果你還不是很了解操作系統(tǒng)的概念,可以收看上期關(guān)于操作系統(tǒng)的知識:

【Linux雜貨鋪】操作系統(tǒng)-CSDN博客

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

? ? ? ? 這里簡單概括一下操作系統(tǒng)的的前置知識,即什么管理,簡單概括就是先描述,在組織。舉個例子,操作系統(tǒng)將一個個硬件描述為一個結(jié)構(gòu)體struct,將結(jié)構(gòu)體組織稱不同數(shù)據(jù)結(jié)構(gòu),例如鏈表,通過對鏈表的增刪查改來管理硬件。

? ? ? ? 這里就先介紹了操作系統(tǒng)重管理的概念。

??進(jìn)程的概念

? ? ? ? 除法任何一個事件時,系統(tǒng)都會將它定義為一個進(jìn)程,并給予這個進(jìn)程一個ID,稱為PID,同時根據(jù)觸發(fā)這個進(jìn)程的用戶與相關(guān)屬性關(guān)系,給予這個PID一組有效的權(quán)限設(shè)置。

? ? ? ? 執(zhí)行一個程序或者命令,就是觸發(fā)一個事件,而獲取一個PID。

? ? ? ? 簡單來說就是一個正在運行的程序。

??描述進(jìn)程-PCB

? ? ? ? 進(jìn)程的信息會被放在一個叫進(jìn)程控制塊的數(shù)據(jù)結(jié)構(gòu)中,可以理解為進(jìn)程的屬性。在Linux系統(tǒng)中PCB是:task_struct。

? ? ? ? task_stuct就是Linux內(nèi)核中的一個數(shù)據(jù)結(jié)構(gòu),它會被裝載到內(nèi)存里并且包含進(jìn)程的信息。

task_ struct 內(nèi)容分類
? ● 標(biāo)示符: 描述本進(jìn)程的唯一標(biāo)示符,用來區(qū)別其他進(jìn)程。
? ● 狀態(tài): 任務(wù)狀態(tài),退出代碼,退出信號等。
? ● 優(yōu)先級: 相對于其他進(jìn)程的優(yōu)先級。
? ● 程序計數(shù)器: 程序中即將被執(zhí)行的下一條指令的地址。
? ● 內(nèi)存指針: 包括程序代碼和進(jìn)程相關(guān)數(shù)據(jù)的指針,還有和其他進(jìn)程共享的內(nèi)存塊的指針
? ● 上下文數(shù)據(jù): 進(jìn)程執(zhí)行時處理器的寄存器中的數(shù)據(jù) [ 休學(xué)例子,要加圖 CPU ,寄存器 ] 。
? ● I/ O 狀態(tài)信息 : 包括顯示的 I/O 請求 , 分配給進(jìn)程的 I O 設(shè)備和被進(jìn)程使用的文件列表。
? ● 記賬信息: 可能包括處理器時間總和,使用的時鐘數(shù)總和,時間限制,記賬號等。
? ● 其他信息

? ? ? ? 進(jìn)程 = 內(nèi)核結(jié)構(gòu)體PCB + 程序的代碼和數(shù)據(jù)。

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

? ? ? ? 每個進(jìn)程都有一個唯一標(biāo)識符,叫pid。

???查看進(jìn)程

? ? ? ? 進(jìn)程信息可以通過 /proc 系統(tǒng)文件查看。如獲得PID為1的進(jìn)程信息,需要查看/proc/1這個文件。

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

? ? ? ? 大多數(shù)進(jìn)程信息同樣可以使用top和ps這些用戶級工具來獲取。

?? 查看正在運行的程序

ps -ajx 
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
 while(1){
 sleep(1);
 }
 return 0;
}

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

??殺死進(jìn)程

kill -9 pid

? ? ? ? kill 先簡單理解為向進(jìn)程發(fā)了個信號,-9表示殺死進(jìn)程,在進(jìn)程的狀態(tài)會進(jìn)行講解。

??通過系統(tǒng)調(diào)用獲取進(jìn)程標(biāo)識符

進(jìn)程id = pid

父進(jìn)程id? = ppid

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
 //獲得子進(jìn)程
 printf("pid: %d\n", getpid());
 
 //獲得父進(jìn)程 
 printf("ppid: %d\n", getppid());
 return 0;
}

? ? ? ? 我們通過父進(jìn)程來創(chuàng)建子進(jìn)程,子進(jìn)程繼承父進(jìn)程的代碼和數(shù)據(jù),會有自己的PCB。

??通過系統(tǒng)調(diào)用創(chuàng)建進(jìn)程

? ? ? ? fork函數(shù),fork函數(shù)會有兩個返回值,父進(jìn)程一個,子進(jìn)程一個。這里可以這樣理解,進(jìn)入fork函數(shù)后,已經(jīng)有了兩個進(jìn)程,父進(jìn)程和子進(jìn)程,父子進(jìn)程會進(jìn)行代碼共享,即有兩個return。

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

? ? ? ? 父進(jìn)程會得到子進(jìn)程的pid,子進(jìn)程的返回值為0。

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
 int ret = fork();
 printf("hello proc : %d!, ret: %d\n", getpid(), ret);
 sleep(1);
 return 0;
}

? ? ? ? fork之后通常要用 if 分流。

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
 int ret = fork();
 if(ret < 0){
 perror("fork");
 return 1;
 }
 else if(ret == 0){ //child
 printf("I am child : %d!, ret: %d\n", getpid(), ret);
 }else{ //father
 printf("I am father : %d!, ret: %d\n", getpid(), ret);
 }
 sleep(1);
 return 0;
}

?? 進(jìn)程的特點

? ? ? ? 1. 競爭性:系統(tǒng)進(jìn)程數(shù)目眾多,而CPU資源只有少量,甚至1個,所以進(jìn)程之間具有競爭屬性,為了高效完成任務(wù),更合理的競爭相關(guān)資源,便具有了優(yōu)先級。

? ? ? ? 2. 獨立性:多進(jìn)程運行,需要獨享各種資源,多進(jìn)程運行期間互不干擾。

? ? ? ? 3. 并行: 多個進(jìn)程在多個CPU下分別,同時進(jìn)行運行,這稱之為并行。

? ? ? ? 4. 并發(fā): 多個進(jìn)程在1個CPU下采用進(jìn)程切換的方式,在一段時間內(nèi),讓多個進(jìn)程得以推進(jìn),稱之為并發(fā)。

??進(jìn)程的狀態(tài)

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

static const char * const task_state_array[] = {
"R (running)", /* 0 */
"S (sleeping)", /* 1 */
"D (disk sleep)", /* 2 */
"T (stopped)", /* 4 */
"t (tracing stop)", /* 8 */
"X (dead)", /* 16 */
"Z (zombie)", /* 32 */
};

R運行狀態(tài)(running): 并不意味著進(jìn)程一定在運行中,它表明進(jìn)程要么是在運行中要么在運行隊列
里。

S睡眠狀態(tài)(sleeping): 意味著進(jìn)程在等待事件完成(這里的睡眠有時候也叫做可中斷睡眠
(interruptible sleep))。

D磁盤休眠狀態(tài)(Disk sleep)有時候也叫不可中斷睡眠狀態(tài)(uninterruptible sleep),在這個狀態(tài)的
進(jìn)程通常會等待IO的結(jié)束。

T停止?fàn)顟B(tài)(stopped): 可以通過發(fā)送 SIGSTOP 信號給進(jìn)程來停止(T)進(jìn)程。這個被暫停的進(jìn)程可
以通過發(fā)送 SIGCONT 信號讓進(jìn)程繼續(xù)運行。

X死亡狀態(tài)(dead):這個狀態(tài)只是一個返回狀態(tài),你不會在任務(wù)列表里看到這個狀態(tài)。

僵死狀態(tài)(Zombies)是一個比較特殊的狀態(tài)。當(dāng)進(jìn)程退出并且父進(jìn)程(使用wait()系統(tǒng)調(diào)用,后面講)
沒有讀取到子進(jìn)程退出的返回代碼時就會產(chǎn)生僵死(尸)進(jìn)程

R : 進(jìn)程運行狀態(tài)

S:(淺)休眠狀態(tài),進(jìn)程處于等待狀態(tài),等待資源就緒,可中斷休眠。

D:(深)休眠狀態(tài),不可被殺,深度睡眠,不可中斷睡眠。

? 1. 等待進(jìn)程自己醒來。

? 2. 斷電重啟。

T:暫停狀態(tài)

? ? ? ? kill -19 pid 改為暫停狀態(tài),即將進(jìn)程暫停。

? ? ? ? kill -18 pid? 繼續(xù)運行進(jìn)程。

t : 調(diào)試暫停,debug調(diào)試,遇到斷點就暫停。

?? kill 信號

? ? ? ? kill 向指定進(jìn)程發(fā)送信號。kill -l 查看信號

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

?? 僵尸進(jìn)程?

? ? ? ? z狀態(tài),即進(jìn)程已經(jīng)運行完畢,但需要維持自己的退出信息,在自己的task_struct記錄自己的退出信息,未來讓父進(jìn)程讀取,如果父進(jìn)程沒有讀取,僵尸進(jìn)程會一直存在。

? ? ? ? 僵尸進(jìn)程不可以被殺死。如果僵尸進(jìn)程一直沒有被父進(jìn)程讀取,就會造成內(nèi)存泄漏。

? ? ? ? x狀態(tài)就就是,讀取了z,由os釋放進(jìn)程。

?? 孤兒進(jìn)程

? ? ? ? 父進(jìn)程先退出,子進(jìn)程就被稱為“孤兒進(jìn)程”。孤兒進(jìn)程被1號進(jìn)程領(lǐng)養(yǎng),由os進(jìn)行回收。

? ? ? ? 孤兒進(jìn)程可以被殺死。

?? 運行狀態(tài)

????????R運行狀態(tài):并不意味著程序一定在運行中,表明程序要么在運行中,要么在運行隊列中。

? ? ? ? 分時操作系統(tǒng),即每個進(jìn)程都有一個時間片,在規(guī)定時間片內(nèi)執(zhí)行進(jìn)程,如果進(jìn)程沒有執(zhí)行完畢,則會再次進(jìn)入運行隊列等待。

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

?? 阻塞狀態(tài)

? ? ? ? S休眠狀態(tài):意味著進(jìn)程正在等待事件完成。

? ? ? ? D磁盤休眠狀態(tài):有時候也叫不可中斷休眠狀態(tài),在這個狀態(tài)的進(jìn)程通常會等待IO結(jié)束。

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

?? 掛起狀態(tài)

????????內(nèi)存資源不足,且進(jìn)程處于阻塞狀態(tài)時,進(jìn)程就會被喚出到swap分區(qū)中。過多的掛起,會導(dǎo)致效率問題

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

??進(jìn)程的切換

? ? ? ? 基于時間片等原因,進(jìn)程可能會切換到其他狀態(tài),那么CPU是如何知道進(jìn)程執(zhí)行到哪了呢,接著上一次執(zhí)行繼續(xù)執(zhí)行呢?

? ? ? ? CPU的寄存器會保存著進(jìn)程的臨時數(shù)據(jù)。CPU內(nèi)部所有寄存器中的臨時數(shù)據(jù),就叫做進(jìn)程的上下文。【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

??進(jìn)程的優(yōu)先級

?? 概念

? ? ? ? 本質(zhì)是指定一個進(jìn)程獲得某種資源的先后順序,在task_struct中是一個數(shù)字int,優(yōu)先級數(shù)字越小,優(yōu)先級越高。

? ? ? ? 為什么要有優(yōu)先級呢?因為進(jìn)程訪問的資源是有限的。

?? 原則

? ? ? ? 分時操作系統(tǒng),基于時間片調(diào)度輪轉(zhuǎn),要保證基本的公平。如果進(jìn)程因為長時間不被調(diào)度,就會造成饑餓問題。

?? 查看方式

ps -l

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

UID : 代表執(zhí)行者的身份
PID : 代表這個進(jìn)程的代號
PPID :代表這個進(jìn)程是由哪個進(jìn)程發(fā)展衍生而來的,亦即父進(jìn)程的代號
PRI :代表這個進(jìn)程可被執(zhí)行的優(yōu)先級,其值越小越早被執(zhí)行
NI :代表這個進(jìn)程的 nice

?? PRI 和 NI

? ? ? ? PRI就是進(jìn)程的優(yōu)先級,其值越小,進(jìn)程的優(yōu)先級就越高。

? ? ? ? NI就是nice值,即進(jìn)程可被執(zhí)行的優(yōu)先級的修證數(shù)據(jù)。

? ? ? ? 進(jìn)程優(yōu)先級 = PRI + NI。

? ? ? ? nice值的取值范圍是[-20 , 19] 一共40個級別。

? ? ? ? RPI優(yōu)先級默認(rèn)是從801開始的,取值是[60 , 99]。

?? 調(diào)整方式

? ? ? ? 用top命令更改已存在的進(jìn)程的nice

● top

● 輸入“r” -> 輸入PID -> 輸入nice值

?? 進(jìn)程的地址空間 (虛擬地址)

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

? ? ? ? 我們在C/C++語言中看到的地址都是虛擬地址。物理地址,用戶是看不到的,由os統(tǒng)一管理。os負(fù)責(zé)將虛擬地址轉(zhuǎn)換為物理地址。

? ? ? ? 地址空間本質(zhì)上是一個結(jié)構(gòu)體,內(nèi)部是很多屬性,表示每個區(qū)間的范圍??梢院唵卫斫?,每個進(jìn)程都有一個地址空間和頁表,頁表負(fù)責(zé)將地址空間上的虛擬地址轉(zhuǎn)為物理地址。

? ? ? ? 父進(jìn)程創(chuàng)建子進(jìn)程后,子進(jìn)程的頁表與父進(jìn)程的頁表是一樣的,即相同的虛擬地址映像到相同的物理地址。但是如果一個進(jìn)程想要修改,則物理地址就會發(fā)生改變,即虛擬地址對應(yīng)不同的物理地址。這就是寫實拷貝。【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

?? 虛擬地址的好處

1. 將無序變?yōu)橛行?,以統(tǒng)一的視角看待物理內(nèi)存以及運行各個區(qū)域。

2. 進(jìn)程管理模塊和內(nèi)存管理模塊進(jìn)行解耦

3. 有效的攔截非法請求。

?? Linux2.6 內(nèi)核進(jìn)程調(diào)度隊列

? ? ? ? 一個CPU擁有一個requeue(運行隊列)。

? ? ? ? 普通優(yōu)先級:100-139?

? ? ? ? 實時優(yōu)先級:0 - 99 (不關(guān)心)
?

?? 活動隊列

? ? ? ? ?時間片還沒有結(jié)束的所有進(jìn)程都會按照優(yōu)先級放在該隊列。

nr_active: 總共有多少個運行狀態(tài)的進(jìn)程
queue[140]: 一個元素就是一個進(jìn)程隊列,相同優(yōu)先級的進(jìn)程按照 FIFO 規(guī)則進(jìn)行排隊調(diào)度 , 所以,數(shù)組下標(biāo)就是優(yōu)先級!
從該結(jié)構(gòu)中,選擇一個最合適的進(jìn)程,過程是怎么的呢?
1. 0 下表開始遍歷 queue[140]
2. 找到第一個非空隊列,該隊列必定為優(yōu)先級最高的隊列
3. 拿到選中隊列的第一個進(jìn)程,開始運行,調(diào)度完成!
4. 遍歷 queue[140] 時間復(fù)雜度是常數(shù)!但還是太低效了!
bitmap[5]: 一共 140 個優(yōu)先級,一共 140 個進(jìn)程隊列,為了提高查找非空隊列的效率,就可以用 5*32
比特位表示隊列是否為空,這樣,便可以大大提高查找效率

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記

? ? ? ? 上圖,我們展示活動隊列,過期隊列也是同理。

??? 過期隊列

? ? ? ? 過期隊列和活動隊列一模一樣,過期隊列上放置的集成,都是時間片耗盡,但是還沒有結(jié)束的進(jìn)程。當(dāng)活動隊列上的進(jìn)程都處理完畢后,對過期隊列進(jìn)程時間片重計算。

??active指針和expired指針

? ? ? ??active指針永遠(yuǎn)指向活動隊列。

????????expired指針永遠(yuǎn)指向過期隊列。

????????可是活動隊列上的進(jìn)程會越來越少,過期隊列上的進(jìn)程會越來越多,因為進(jìn)程時間片到期時一直都存在的。

????????沒關(guān)系,在合適的時候,只要能夠交換active 指針和 expired 指針的內(nèi)容,就相當(dāng)于有具有了一批新的活動進(jìn)程!

??總結(jié)

? ? ? ? 以上,就是本期【Linux雜貨鋪】進(jìn)程基本概念的所有內(nèi)容了,講解了什么事進(jìn)程,進(jìn)程的狀態(tài)有哪些,包括僵尸進(jìn)程,孤兒進(jìn)程,講解了進(jìn)程的優(yōu)先級,也粗略的講解了進(jìn)程的地址空間,也就是平常說的虛擬地址,以及Linux中臨時拷貝是什么,在Linux中是如何調(diào)度進(jìn)程的。

? ? ? ? 如果感覺本期內(nèi)容對你有幫助,歡迎點贊,收藏,關(guān)注Thanks?(?ω?)?

【Linux雜貨鋪】進(jìn)程的基本概念,Linux雜貨鋪,linux,運維,服務(wù)器,c++,學(xué)習(xí),筆記文章來源地址http://www.zghlxwxcb.cn/news/detail-841574.html

到了這里,關(guān)于【Linux雜貨鋪】進(jìn)程的基本概念的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【C++雜貨鋪】模板

    【C++雜貨鋪】模板

    ?? 實現(xiàn)一個通用的交換函數(shù) 想要實現(xiàn)一個通用的交換函數(shù)不難,借助函數(shù)重載就可以。函數(shù)重載小伙伴們還記得嘛??,忘了的小伙伴可以走傳送門回去復(fù)習(xí)一下。如上面代碼所示,我們借助函數(shù)重載實現(xiàn)了三份 Swap 函數(shù),分別用來交換兩個整型變量、兩個雙精度浮點型變量

    2024年02月09日
    瀏覽(17)
  • 【C++雜貨鋪】內(nèi)存管理

    【C++雜貨鋪】內(nèi)存管理

    從用途和存儲的角度來看,在C/C++程序中有 局部數(shù)據(jù)、靜態(tài)數(shù)據(jù)、全局?jǐn)?shù)據(jù)、常量數(shù)據(jù)、動態(tài)申請的數(shù)據(jù) 五種主要的數(shù)據(jù),各種數(shù)據(jù)的特點如下: 局部數(shù)據(jù) :隨用隨創(chuàng)建,存儲在棧區(qū),作用域只在局部,生命周期在局部,出了作用域就銷毀。 靜態(tài)數(shù)據(jù) :存儲在數(shù)據(jù)段,作

    2024年02月16日
    瀏覽(20)
  • 【C++雜貨鋪】內(nèi)管管理

    【C++雜貨鋪】內(nèi)管管理

    目錄 ??前言?? ?? C/C++中內(nèi)存分布 ?? new 和 delete的使用 ?? new 和 delete的優(yōu)點 ?? new 和 delete的原理 ??? operator new 和 operator delete函數(shù) ??? 內(nèi)置類型 ??? 自定義類型 ?? 內(nèi)存泄漏 ?? 總結(jié) ? ? ? ? 歡迎收看本期【C++雜貨鋪】,本期內(nèi)容講解C++內(nèi)存管理。包含了C++中內(nèi)存

    2024年04月14日
    瀏覽(34)
  • 【C++雜貨鋪】拷貝構(gòu)造函數(shù)

    【C++雜貨鋪】拷貝構(gòu)造函數(shù)

    ?? 定義 拷貝構(gòu)造函數(shù) 是構(gòu)造函數(shù)的一個重載 ,它的本質(zhì)還是 構(gòu)造函數(shù) ,那就意味著,只有在創(chuàng)建對象的時候,編譯器才會自動調(diào)用它,那他和普通的構(gòu)造函數(shù)有什么區(qū)別呢? 拷貝構(gòu)造函數(shù),是創(chuàng)建對象的時候,用一個已存在的對象,去初始化待創(chuàng)建的對象 。簡單來說,

    2024年02月16日
    瀏覽(22)
  • 【C++雜貨鋪】詳解string

    【C++雜貨鋪】詳解string

    目錄 ???前言?? ?? 為什么學(xué)習(xí)string ?? 認(rèn)識string(了解) ?? string的常用接口 ??? 構(gòu)造函數(shù) ??? string類對象的容量操作 ??? string類對象的訪問以及遍歷操作?編輯 ??? string類對象的修改操作 ?? 模擬實現(xiàn)string ?? 總結(jié) ? ? ? ? 歡迎觀看本期【C++雜貨鋪】,本期內(nèi)容

    2024年03月20日
    瀏覽(25)
  • 【C++雜貨鋪】缺省參數(shù)、函數(shù)重載

    【C++雜貨鋪】缺省參數(shù)、函數(shù)重載

    ?缺省參數(shù)是 聲明或定義函數(shù)時為函數(shù)的參數(shù)指定一個缺省值 。在調(diào)用該函數(shù)時,如果沒有指定實參則采用該形參的缺省值,否則使用指定的實參。 ?上面代碼在 fun 函數(shù)的形參部分給了缺省值10,這意味著在調(diào)用 fun 函數(shù)的時候可以傳參,也可以不傳參,如果傳參了那形參

    2024年02月16日
    瀏覽(18)
  • 【C++雜貨鋪】詳解list容器

    【C++雜貨鋪】詳解list容器

    目錄 ??前言?? ?? 介紹 ?? 使用 ??? 構(gòu)造 ??? 迭代器iterator ??? capacity ??? modifiers ??? 迭代器失效 ?? 模擬實現(xiàn) ??? 迭代器的實現(xiàn) ?? 代碼展示 ?? 和vector的區(qū)別 ?? 總結(jié) ? ? ? ? 歡迎收看本期【C++雜貨鋪】,本期內(nèi)容將講解STL中關(guān)于list的內(nèi)容,會分為一下幾個方

    2024年04月14日
    瀏覽(23)
  • 【C++雜貨鋪】運算符重載

    【C++雜貨鋪】運算符重載

    本文將以日期類為基礎(chǔ),去探尋運算符重載的特性與使用方法,下面先給出日期類的基礎(chǔ)定義: 備注 :拷貝構(gòu)造函數(shù)和析構(gòu)函數(shù),均可以不寫,因為當(dāng)前日期類的三個成員變量都是內(nèi)置類型,沒有動態(tài)申請空間,使用淺拷貝就可以。 ?? 如何比較兩個日期的大?。?現(xiàn)如今,

    2024年02月16日
    瀏覽(22)
  • 【C++雜貨鋪】再談類和對象

    【C++雜貨鋪】再談類和對象

    在創(chuàng)建對象的時候,編譯器通過調(diào)用構(gòu)造函數(shù),在構(gòu)造函數(shù)體中,給對象中的各個成員變量一個合適的初值。 雖然上述構(gòu)造函數(shù)調(diào)用之后,對象中已經(jīng)有了一個初始值,但是不能將其稱為對對象中成員變量的初始化, 構(gòu)造函數(shù)體中的語句只能將其稱為賦初值,而不能稱作初

    2024年02月16日
    瀏覽(15)
  • 【C++雜貨鋪】string使用指南

    【C++雜貨鋪】string使用指南

    2024年02月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包