常量數字 被分配的位置

2021-06-10 06:52:38 字數 625 閱讀 6910

(1) #define a 100

100儲存在哪?立即數直接編譯進指令裡了,所以在**區。

(2) const int a = 100;

這裡進行常量摺疊,100儲存在哪?

在資料區的靜態區。全域性變數待的地方。

(3) const int a = test();

這裡不進行常量摺疊,假設test()返回100,100儲存在哪?

同上。(4) 程式中其它地方出現的字面值100

這些值儲存在哪?

同(1) 編譯進指令裡了,比如 mov ax,100

(5) char* a = "hello world!";

"hello world!"儲存在靜態資料區,它的儲存和上面100的儲存有什麼不同?

100是立即數,不需要儲存在靜態資料區,字串不是立即數。

所有的常量都在靜態區,hello在,world也在,常量字串都在那

一些沒有辦法化成立即數的數字也會放在那,比如int x[5] = ;這5個數字也是在那裡。

char a = 「hello」;在棧上生成乙個陣列,並拷貝靜態區的hello字元常量進去

char *p = 「world」; 指向靜態區常量字串(靜態區常量不可以修改)

變數,常量,靜態變數儲存的位置

常見的儲存區域可分為 1 棧由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。2 堆由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個new就要對應乙個delete。如果程式設計師沒有釋放掉,程式會一直占用記憶體,導...

堆疊分配物件的成員儲存位置

棧上建立的臨時物件及其成員可以確定儲存在棧上 但是如果在堆上面手動分配乙個物件,那麼這個物件的成員究竟儲存在記憶體中的什麼位置?分別建立乙個棧上分配的臨時結構體物件和乙個堆上手動分配的結構體物件,列印儲存位置。include include typedef struct meminfo meminf...

數字後端partition的分配依據

層次化設計的ic 劃分的原因 1.不同的功能模組 2.設計大小和複雜度 3.方便管理 4.設計再使用 設計中需要重複使用的ip 可用例化 instantiation 定義設計的模組 合併相鄰模組間類似功能的電路 模組的輸出邊界是暫存器的輸出端 避免膠合邏輯 一般來說,把模組劃分定為約400 800k...