C 的初步了解記憶體

2021-06-28 04:21:07 字數 1501 閱讀 2303

一•  new/delete

int* p2 = new int;//不保證是零

int* p3 = new int(100);

int* p4 = new int[5];

delete p2;

delete p3;

delete p4;

二• 定位分配

char buf[100] = {};

new(buf) int[25];

不存在定位分配所對應的delete運算,一旦buf釋放,new所分配的空間也隨即釋放

//初步涉及記憶體   後面補充深入

//現在只是** 物件在**?在全域性?堆裡?還是 棧裡?生命週期是如何?

#include using namespace std;

//結構體

struct date

//析構

~date()

//成員變數

int year,month,day;

//成員函式

void show()

};int a = 100; //這個變數在全域性區

date d;//可以說是有這麼乙個變數 或者物件都可以。和普通變數比,它有成員變數和成員函式可以呼叫

/* *

不管是棧也好 堆也好 都需要開闢空間

通常都是方法執行了 在棧中開闢空間建立物件

堆裡 都是手動開闢 比如new alloc malloc

這裡的date d; 不在方法裡 也不在堆裡 所以這個物件還是在全域性區 *

*///堆裡的物件 生命週期是怎樣的?

//new是建立 在c++裡面需要delete 。 oc裡面是release,當引用計數器為0的時候,自動**機制幫我們去**了

//棧裡物件的空間 不用我們去管理記憶體

//全域性區物件(變數)在程式開始執行時,就建立出來,在程式結束時銷毀

void fa()

//主函式

int main()

//程式結束後 是全域性區的那個物件和main方法棧裡的d2銷毀

執行結果如下:

date()

*****= 1 *****=

date()

***** 3 *****=

date()

~date()

~date()

*****= 2 *****=

date()

***** 4 *****=

date()

date()

date()

~date()

~date()

~date()

***** 5 *****

***** 6 *****

10***** 7 *****

12345

~date()

~date()

program ended with exit code: 0

初步了解記憶體機制

對於計算機來說,儲存資料時通過申請記憶體來實現的,如果我們的資料是水的話,記憶體就是容器。對於int型的資料,需要以32bit大小的記憶體儲存,對於字串型別的需要8bit個單位大小的記憶體。但是申請記憶體的時候到底是乙個什麼樣的機制呢?或者是怎麼儲存的機制呢?我們還是以水和容器的例子來表達。在計算機...

初步對C語言的了解

第 一 特點 語言是一種結構化語言。它層次清晰,便於按模組化方式組織程式,易於除錯和維護。語言的表現能力和處理能力極強。它不僅具有豐富的運算子和資料型別,便於實現各類複雜的資料結構。它還可以直接訪問記憶體的實體地址,進行位 bit 一級的操作。由於 語言實現了對硬體的程式設計操作,因此 語言集高階語...

Jawe的初步了解

一 解壓開 jawe 原始碼包二 執行configure.bat 檔案這時會產生乙個 build.properties 檔案。檔案內容大致如下 jdk.dir c jbuilderx jdk1.4 install.dir version.number 1.4 三 再執行 make.bat 就可以編譯...