成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++內(nèi)存管理不同方式分析

開發(fā) 后端
C++內(nèi)存管理的方式總共有三種,分別為自動存儲、靜態(tài)存儲、動態(tài)存儲。那么如何正確的理解這三種方式呢?在這里我們將會一一做一個(gè)介紹。

C++編程語言是一個(gè)應(yīng)用廣泛,功能強(qiáng)大的C語言升級版本。其中有很多內(nèi)容都需要我們不斷的去摸索。在這里我們先來了解一下有關(guān)C++內(nèi)存管理的相關(guān)知識,讓大家對C++對內(nèi)存操作的相關(guān)知識能有一個(gè)充分的了解。#t#

1. 使用new動態(tài)分配內(nèi)存:若沒有足夠內(nèi)存,則new返回0(空值指針null pointer);

2. 不要使用delete釋放不是new分配的內(nèi)存,delete釋放指針指向的內(nèi)存,但不會刪除指針本身;

3、對空值指針應(yīng)用delete是安全的;

4、創(chuàng)建數(shù)組時(shí)的靜態(tài)聯(lián)編與動態(tài)聯(lián)編:數(shù)組聲名int a[10], 靜態(tài)聯(lián)編,數(shù)組的長度在編譯時(shí)確定;

用new[]創(chuàng)建數(shù)組,動態(tài)聯(lián)編,運(yùn)行時(shí)為數(shù)組分配內(nèi)存空間。動態(tài)-運(yùn)行時(shí)分配內(nèi)存。

C++內(nèi)存管理總共有三種方式:自動存儲、靜態(tài)存儲、動態(tài)存儲(自由存儲空間或堆)(三塊獨(dú)立的內(nèi)存)

自動存儲:(auto / register ) 自動變量的持久性為自動的,在程序開始執(zhí)行其所屬的函數(shù)或代碼塊時(shí)創(chuàng)建,執(zhí)行 完后釋放。

  1. auto: in stack LIFO   
  2. register: in CPU register 

使用寄存器處理變量,提高訪問速度;沒有內(nèi)存地址,不能用&取地址。

靜態(tài)存儲:(global / static ) 在程序整個(gè)運(yùn)行期間都存在. (外部鏈接性、內(nèi)部鏈接性、無鏈接性)初始化為0。

  1. int global = 1000; //外部鏈接性,可在程序的其他文件使用, 
    使用時(shí)要用extern聲名 (外部變量/全局變量)  
  2. static int one_file = 50
    //內(nèi)部鏈接性,只能在本文件使用 (函數(shù)如果為static也一樣,只能在該文件中被調(diào))  
  3. int main(){ ... }  
  4. void func(){  
  5. static int count = 0; //靜態(tài)局部變量,只在該代碼中可用,
    但它在該代碼不活動時(shí)始終存在。  

可用extern重新聲名以前定義過的外部變量;

訪問被隱藏的外部變量(被局部變量隱藏了):用作用域解析符(::)::n 表示使用n的全局版本

  1. const char * const months[12] = {"Jan", "Feb", "Mar",...}; 

第一個(gè)const防止字符串被修改,第二個(gè)const確保數(shù)組中每個(gè)指針始終指向它最初指向的字符串。

mutable限定符:const/volatile/mutable const禁止修改結(jié)構(gòu)成員,但是mutable使const結(jié)構(gòu)中的成員不受這種限制

  1. struct data { char name[30]; mutable int accesses; };  
  2. const data a = {....}; strcpy(a.name, "fdsf"); 
    //not allowed a.access++//allowed 

外部定義的const數(shù)據(jù)的鏈接性為內(nèi)部的,跟static一樣

動態(tài)存儲:(free store / heap) new/delete, malloc/free

1、使用new來設(shè)置指針的語句必須位于函數(shù)中,因?yàn)橹荒苁褂贸A勘磉_(dá)式來初始化靜態(tài)存儲變量:

  1. float * p;  
  2. //float *p = new float[20]; 
    //initialization with non-const not allowed here  
  3. main (){ p = new float[20]; } 

2、布局new操作符 (placement new): 自己指定空間為placement new提供內(nèi)存空間,而不是在heap中分配

  1. #include< new> 
  2. char buffer[512];  
  3. ......double *pd1, *pd2;  
  4. pd1 = new double[N];  
  5. pd2 = new (buffer) double[N]; 

以上就是我們對C++內(nèi)存管理的相關(guān)介紹。

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-02-05 10:30:02

C++操作符重載

2010-02-04 10:33:40

C++異常傳遞

2010-02-04 10:13:35

C++獲得系統(tǒng)時(shí)間

2015-07-08 16:07:19

iOSObjective-C

2010-02-06 14:12:54

C++繼承方式

2010-02-03 15:27:26

C++ static

2010-02-04 14:29:45

C++ typenam

2010-02-26 13:34:50

WCF編碼機(jī)制

2010-07-16 13:41:08

SQL Serverl

2010-01-13 18:39:05

C++安裝

2010-02-04 16:39:26

C++析構(gòu)函數(shù)

2011-04-11 09:47:50

C++內(nèi)存管理

2010-03-01 15:21:57

WCF死鎖

2010-02-23 09:58:21

WCF客戶端驗(yàn)證

2009-07-06 18:23:32

JSP文件下載

2010-02-03 10:17:29

C++繼承方式

2010-01-25 14:56:08

C++程序

2010-02-03 14:10:28

C++內(nèi)存邏輯區(qū)域

2022-04-02 19:30:16

云遷移云提供商云成本

2011-07-01 10:16:08

C++內(nèi)存管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产真实精品久久二三区 | 国产在线一区二区三区 | 一区日韩 | 久久一级免费视频 | 天天插日日操 | 亚洲欧洲日本国产 | 成人一区在线观看 | 国产精品视频在线观看 | 久久久综合久久 | 免费观看的黄色网址 | 不卡一区 | 免费观看黄色一级片 | 欧美乱做爰xxxⅹ久久久 | 久草网址 | 中文字幕日韩欧美一区二区三区 | av网站免费观看 | 中文字幕不卡视频在线观看 | 成人黄色在线观看 | 在线婷婷 | 国产精品毛片无码 | 天天拍天天操 | 日本福利在线 | 欧美黄色一区 | 欧美日韩一区不卡 | 精品一区二区三区在线观看国产 | 日本粉嫩一区二区三区视频 | 在线免费观看a级片 | 中文字幕av网 | 超碰欧美 | 欧美日韩在线精品 | 欧美一级毛片在线播放 | 精品视频在线播放 | 91亚洲国产成人精品一区二三 | 国产高清在线精品 | av性色| 黄色av网站在线观看 | 久久亚洲国产精品日日av夜夜 | jizjizjiz中国护士18 | 日韩在线免费视频 | 国产精品av久久久久久久久久 | 欧美日韩免费一区二区三区 |