奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C++new相關知識點詳細解析

時間:2024-08-29 04:51:25 好文 我要投稿
  • 相關推薦

C++new相關知識點詳細解析

  每個程序在執行時都占用一塊可用的內存空間,用于存放動態分配的對象,此內存空間稱為程序的自由存儲區(free store)或堆(heap)。C語言用一堆標準庫函數malloc和free在自由存儲區中分配存儲空間,而C++則用new和表達式實現相同的功能。

C++new相關知識點詳細解析

  一、new和創建和釋放動態數組:

  數組類型的變量有三個重要的限制:數組長度固定,在編譯時必須知道其長度,數組只在定義它的語句內存在。動態數組:長度固定,編譯時不必知道其長度,通常是運行時確定;一直存在,直到程序顯示釋放它。

  1、動態數組的定義:數組變量通過指定類型、數據名和維數來定義。而動態分配數組時,只需指定類型和數組長度,不必為數組對象命名,new表達式返回指向新分配數組的第一個元素的指針:int*pia=new int[10];在自由存儲區中創建的數組對象沒有名字,只能通過其地址間接訪問堆中的對象。

  2、初始化動態分配的數組:若數組元素具有類類型,將使用該類的默認構造函數初始化;若數組元素是內置類型,則無初始化。也可跟在數組長度后面的一堆空圓括號,對數組元素做值初始化。

  string *psa=newstring[10]; //array of 10 empty strings

  int *pia=newint[10]; //array of 10 uninitializedints

  int *pia2=newint[10](); //array of 10 zero

  對于動態分配的數組,其元素只能初始化為元素類型的默認值,而不能像數組變量一樣,用初始化列表為數組元素提供各不相同的初值。

  3、const對象的動態數組:若在堆中創建的數組存儲了內置類型的const對象,則必須為這個數組提供初始化:因數組元素都是const對象,無法復制。

  const int*pci_ok=new const int[100]();

  C++允許定義類類型的const數組,但該類型必須提供默認構造函數。

  已創建的常量元素不允許修改,所以此類數組用處不大。

  4、允許動態分配空數組:動態分配數組,多是由于編譯時不知道數組長度。

  size_t n=get_size(); int*p=new int[n];

  C++雖然不允許定義長度為0的數組變量,但明確指出,調用new創建長度為0的數組是合法的。new返回有效的非零指針。該指針不能與new返回的其他指針不同,不能進行解引用操作,因它沒指向任何元素。允許的操作:比較運算。

  5、動態空間的釋放:程序員必須顯示將其占用的存儲空間返還給程序的自由存儲區。C++語言為指針提供 []表達式釋放指針所指向的數組空間。

   [] pia;[]告訴編譯器該指針指向的是堆中的數組,而非單個對象,若遺漏,編譯器無法發現。

  二、new和創建和釋放單個對象

  定義變量時,必須指定其數據類型和名字。而動態創建對象時,只需指定其數據類型。new返回指向新創建對象的指針,通過該指針來訪問此對象。

  1、動態創建對象的初始化:int *pi=new int(1024)

  2、動態創建對象的默認初始化:若不提供顯式初始化,與函數內定義的變量初始化方式相同,類類型->默認構造函數;內置類型->無初始化。同樣可做值初始化:

  int *pi=newint();值初始化的()必須置于類型名后,而非變量后,int x()是聲明函數。

  3、撤銷動態創建的對象:程序員必須顯示將該對象占用的內存返回給自由存儲區。,若指針指向不是用new分配的內存地址,則對該指針使用非法。

  int i; int *pi=&i; pi;//編譯器不能斷定一個指針指向什么類型的對象,因此大部分編譯器仍能通過(VS2005編譯通過,執行到該處報錯)。

  4、零指針的刪除:int *ip=0; ip;若指針值為0,則合法。

  5、后,重設指針值: p;刪除指針后,p成為懸垂指針。懸垂指針指向曾經存放對象的內存,但該對象已不存在,引用該內存報錯。所以一旦刪除指針所指向的對象,立即將指針置為0。

  6、const對象的動態分配和回收:創建時初始化,且一經初始化,其值不可修改。

  const int*pci=new const int(1024);new表達式返回int型const對象的指針。所以只能賦給指向const的指針。內置類型對象或未提供默認構造函數的類類型對象必須顯示初始化。

  刪除const對象: pci;

  三、與動態內存分配相關的三種常見程序錯誤:

  1、刪除指向動態分配內存的指針失敗,稱為memory leak。一般需等程序運行一段時間,耗盡內存時,才顯露出來。

  2、讀寫已刪除的對象。若刪除指針所指對象后,置指針值為0,易檢查出此類錯誤。

  3、對同一個內存空間使用兩次表達式。第二次時,自由存儲區可能被破壞。

  

【C++new相關知識點詳細解析】相關文章:

葉芝的相關介紹12-27

小暑的相關知識12-18

與我相關作文12-16

智能的解析作文07-20

年夜飯的詳細由來01-09

北漢皇帝的列表及詳細介紹03-30

有關蝗蟲的相關知識03-04

立夏養生的相關事項05-04

計算詞語相關介紹03-06

《孔乙己》的疑難解析03-21

主站蜘蛛池模板: 宁远县| 行唐县| 明水县| 汪清县| 任丘市| 溆浦县| 古交市| 上犹县| 琼海市| 萨迦县| 日喀则市| 黑山县| 大悟县| 蓬安县| 萨嘎县| 内江市| 黄山市| 南丰县| 和顺县| 南城县| 左云县| 衢州市| 惠来县| 寻乌县| 霸州市| 垫江县| 宁强县| 大姚县| 和田市| 四子王旗| 大新县| 镇平县| 榆林市| 新沂市| 宁海县| 中宁县| 左贡县| 桐柏县| 正宁县| 济宁市| 大新县|