記憶體模型(1)

2021-07-04 20:31:25 字數 740 閱讀 4689

一、單獨編譯

1、單獨編譯

c++允許將不同的元件函式放在不同的檔案當中,可以單獨編譯這些檔案,然後將它們鏈結成可執行的程式。

2、標頭檔案中常包含的內容:

(1)函式原型

(2)使用#define和const定義的符號常量

(3)結構宣告

(4)類宣告

(5)模板宣告

(6)內聯函式

需要注意的是,類模板不支援單獨編譯,因此類模版的宣告和定義應該放在同乙個檔案下,通常放在模板宣告的標頭檔案中。

3、在包含標頭檔案的時候,盡量使用引號而不是尖括號:

#include"string"

//instead of

#include

因為如果檔名包含在尖括號裡面,編譯器將在儲存標準標頭檔案的主機系統的檔案系統中查詢;如果檔名包含在尖括號中,則編譯器將首先查詢當前的工作目錄或源**目錄,如果沒找到標頭檔案,則將在標準位置查詢。

4、標頭檔案防護

同乙個檔案中只能將乙個標頭檔案包含一次!為了避免多次包含同乙個標頭檔案,c++採用了基於#ifndef技術,例如下面**,當只有沒有使用預處理器指令#define定義string_h_時,才處理#ifndef和#endif之間的語句:

#ifndef string_h_

#define string_h_

.....

#endif

1 記憶體分割槽模型

區 所有的 都會放這裡 全域性區 棧 由編譯器管理記憶體的分配和釋放 堆 由程式設計師分配和釋放 區和全域性區都是程式執行前分配的兩個區域 全域性區 全域性變數 靜態變數 常量 const 只要沒有寫到函式體中的都是全域性變數 static靜態變數也會放到全域性區 常量 字串常量 雙引號引起來的都是...

c 核心程式設計 1 記憶體模型

記憶體四區的意義 不同區域存放不同的資料,賦予不同的生命週期,靈活程式設計 區 存放cpu執行的機器指令 區是共享的,共享的目的是對於頻繁執行的程式,只需要在記憶體中有乙份 即可 多次載入只有乙份 區是唯讀的,使其唯讀的原因是防止程式意外的修改了它的指令 全域性區 全域性變數和靜態變數 常量區 字串...

C 物件記憶體模型1(堆疊模型)

物件記憶體模型 一.棧 stack vs.堆 heap 堆 1.myclass c 10 棧物件,空間大小在編譯時確定,函式執行結束,系統立即 2.myclass func 3.myclass func 結論 指標指向棧物件,就要極度小心,一般會有問題!myclass func 總結返回指標問題 返...