欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

為何在調(diào)用delete[]時(shí)括號中不需要指明元素的個(gè)數(shù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)為何在調(diào)用delete[]時(shí)括號中不需要指明元素的個(gè)數(shù),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)建站專注骨干網(wǎng)絡(luò)服務(wù)器租用十多年,服務(wù)更有保障!服務(wù)器租用,托管服務(wù)器 成都服務(wù)器租用,成都服務(wù)器托管,骨干網(wǎng)絡(luò)帶寬,享受低延遲,高速訪問。靈活、實(shí)現(xiàn)低成本的共享或公網(wǎng)數(shù)據(jù)中心高速帶寬的專屬高性能服務(wù)器。

首先為沒看懂問題的同學(xué)進(jìn)行簡單的知識準(zhǔn)備。

在C++中有一條簡單的規(guī)則,調(diào)用new申請的內(nèi)存用delete釋放;調(diào)用new[]申請的內(nèi)存就一定要用delete[]釋放。

考慮有以下類定義。

public:
    Test(){};
    ~Test(){};
};

當(dāng)我們要在堆中創(chuàng)建一個(gè)新對象時(shí),可以用以下代碼:

    ?Test* pTest = new Test;

當(dāng)我們要釋放這個(gè)對象時(shí)可以使用以下代碼:

    delete pTest;

當(dāng)我們要在堆中創(chuàng)建10個(gè)對象是可以使用以下代碼:

    Test* pTests = new Test[10];

當(dāng)我們要釋放這10個(gè)對象時(shí),與new[]相呼應(yīng),必須使用delete[]。

    delete [] pTest;

兩者的區(qū)別在在于帶的new[]和delete[]會(huì)對每個(gè)元素調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)。

以上是每個(gè)C++語法書都會(huì)降到的內(nèi)容。算是知識準(zhǔn)備。

接下來十問題:為什么在調(diào)用delete[]時(shí),括號中不需要指明元素的個(gè)數(shù)?

據(jù)說初期的C++在調(diào)用delete[]時(shí)是需要的指定元素個(gè)數(shù)的,但那樣的話就會(huì)非常麻煩。所以后來進(jìn)行了改進(jìn),在實(shí)現(xiàn)new[]的時(shí)候同時(shí)申請內(nèi)存空間保存元素的個(gè)數(shù)。基本上是這個(gè)樣子:

struct array {
    size_t count_of_test;
   Test t[10];
};

在調(diào)用new[]時(shí)先通過malloc()申請內(nèi)存時(shí)多申請一點(diǎn)空間保存count_of_test,然后是返回給用戶t空間的地址。這個(gè)地址要在malloc獲得的array地址上加一個(gè)偏移量。最后對這個(gè)t空間調(diào)用每個(gè)元素的構(gòu)造函數(shù)。

調(diào)用delete[]的參數(shù)實(shí)際上是t空間的地址。先對這個(gè)地址參數(shù)進(jìn)行減偏移量運(yùn)算得到array地址并取得count_of_test,然后對t空間調(diào)用析構(gòu)函數(shù)count_of_test次。最后以array地址作為參數(shù)調(diào)用free()函數(shù)。

除了正確調(diào)用構(gòu)造函數(shù)/析構(gòu)函數(shù)以外,還要處理保存元素個(gè)數(shù)的空間。

所以必須配對使用。

上述就是小編為大家分享的為何在調(diào)用delete[]時(shí)括號中不需要指明元素的個(gè)數(shù)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章題目:為何在調(diào)用delete[]時(shí)括號中不需要指明元素的個(gè)數(shù)
URL地址:http://chinadenli.net/article22/gshhjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)電子商務(wù)品牌網(wǎng)站制作網(wǎng)站內(nèi)鏈響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作