真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

C++中指針和內存分配的方法

這篇文章主要介紹“C++中指針和內存分配的方法”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“C++中指針和內存分配的方法”文章能幫助大家解決問題。

成都創(chuàng)新互聯(lián)是一家朝氣蓬勃的網站建設公司。公司專注于為企業(yè)提供信息化建設解決方案。從事網站開發(fā),網站制作,網站設計,網站模板,微信公眾號開發(fā),軟件開發(fā),微信平臺小程序開發(fā),十年建站對成都咖啡廳設計等多個領域,擁有多年建站經驗。

指針

指針是保存內存位置地址的變量。我們知道聲明的所有變量在內存中都有一個特定的地址。聲明一個指針變量來指向內存中的這些地址。

聲明指針變量的一般語法是:

int p, *ptr; //聲明變量p和指針變量ptr
p = 4; //賦值4給變量p
ptr = &p; //將p的地址分配給指針變量ptr

在內存中,這些聲明將表示如下:

C++中指針和內存分配的方法

這是指針在內存中的內部表示。當?shù)刂纷兞糠峙浣o指針變量時,它指向的變量如上圖所示。

由于 ptr具有變量 p 的地址,*ptr 將給出變量 p 的值(指針變量 ptr 指向的變量)。

為什么需要 C++ 中的指針?為了解釋對指針的需要,有必要回到基本內存布局。

C++中指針和內存分配的方法

每當執(zhí)行程序時,程序指令都會駐留在代碼段中。并且所有的方法和數(shù)據(jù)都將駐留在堆棧中。代碼部分只能訪問堆棧部分,但不能直接訪問堆部分。

C++中指針和內存分配的方法

注意:由于代碼段不能直接訪問堆段,所以不能直接使用堆內存,會被浪費掉,造成棧內存溢出。

使用指針可以解決這個問題。指針為代碼部分提供了對堆內存的間接訪問

在堆棧部分創(chuàng)建一個指針,該指針指向堆部分的內存地址,從而間接訪問堆部分。

C++中指針和內存分配的方法

C++ 中使用指針的動態(tài)內存分配:

在堆部分分配內存發(fā)生在運行時,而不是在編譯時,因此分配堆內存稱為動態(tài)內存分配。

一般來說,C++不會在堆中分配一個內存,因為在使用指針時通常會遇到的復雜性。所以只分配一個內存塊,我們就要使用堆內存,比如對于數(shù)組,我們會進行動態(tài)內存分配。

在 C++ 中,new運算符用于在運行時分配內存,內存以字節(jié)為單位分配。該新操作符表示用于在堆動態(tài)存儲器分配的請求。如果有足夠的內存可用,則new運算符初始化內存并將新分配和初始化的內存的地址返回給指針變量。

語法:

datatype *pointer_name = new datatype

具體例子

int *ptr = new int;//在動態(tài)分配時,我們可以通過以下兩種方式聲明一個變量。
int *ptr = new int (10);
int *ptr = new int {15};
// new運算符還用于分配數(shù)據(jù)類型的內存塊(數(shù)組)。
int *ptr = new int[20];
// 上面的語句為int類型的20個整數(shù)連續(xù)動態(tài)分配內存,并返回指向序列的第一個元素指向“ptr”指針。

一旦使用new關鍵字將堆內存分配給變量或類對象,我們就可以使用delete關鍵字釋放該內存空間。

動態(tài)內存分配概念的主要用途是通過指定其大小來聲明數(shù)組,但不確定它時將內存分配給數(shù)組。

看一個例子來理解數(shù)組的內存分配用法。

#include 
using namespace std;
int main()
{
    int len, sum = 0;
    cout << "Enter the no. of students in the class" << endl;
    cin >> len;
    int *marks = new int[len]; //Dynamic memory allocation
    cout << "Enter the marks of each student" << endl;
    for (int i = 0; i < len; i++)
    {
        cin >> *(marks + i);
    }
    for (int i = 0; i < len; i++)
    {
        sum += *(marks + i);
    }
    cout << "sum is " << sum << endl;
    return 0;
}

在代碼中,首先詢問用戶一個班級的學生人數(shù),并將其值存儲在 len 變量中。

然后聲明一個整數(shù)數(shù)組,并使用此語句在內存中動態(tài)分配等于 len 變量中存儲的值的空間 int *marks = new int[length];

因此它被分配了一個等于“長度*(1個整數(shù)的大?。钡目臻g。

關于“C++中指針和內存分配的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。


分享標題:C++中指針和內存分配的方法
網站鏈接:http://weahome.cn/article/pdgcjc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部