[問題] auto宣告的記憶體問題

看板C_and_CPP (C/C++)作者 (單車單車)時間14年前 (2012/01/19 14:52), 編輯推噓4(4019)
留言23則, 6人參與, 最新討論串1/4 (看更多)
如題,這可能很少人問過 書上寫說區域變數其實都自動預設auto, 在編譯過程中並不會配置一塊記憶體空間,而是在程式執行時以堆疊的方式存放, 因此他是屬於動態的變數。 ^^^^^^^^^^^^^^^^^^^^^^ 此段是出自洪維恩的書 但是又在動態記憶體章節上面寫說C++都是預設靜態什麼的 很讓人搞混 ok 總之我目前的認知是一般的陣列是靜態宣告... (以下都是區域變數) int a; 跟 auto int a; 等價,而且這是動態 int a[5]; 是靜態,,,應該吧? 那假設我宣告如下(當然是區域): auto int a[5]; 這到底該算靜態還是動態? 已經試過編譯可以過... 如果是靜態那不是表示auto關鍵字在這裡沒用嗎@@? 如果是動態的話那跟 int* a; a = new int[5];又有何不同 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.182.130 ※ 編輯: amozartea 來自: 60.248.182.130 (01/19 14:52) ※ 編輯: amozartea 來自: 60.248.182.130 (01/19 14:54)

01/19 14:55, , 1F
沒有new就是靜態
01/19 14:55, 1F

01/19 14:56, , 2F
話說,沒看過你說的auto...我只知道c++11的auto...
01/19 14:56, 2F
auto是c關鍵字...可以看一下 所以表示就算在陣列前面打auto也不會自動回收 那這關鍵字真的很怪... ※ 編輯: amozartea 來自: 60.248.182.130 (01/19 14:57)

01/19 14:57, , 3F
那是從 K&R C 一路帶到 C++ 的 auto...
01/19 14:57, 3F

01/19 14:58, , 4F
一般來說,你在程式中已經內定的就是放在stack
01/19 14:58, 4F

01/19 14:59, , 5F
你可以看一下第十戒
01/19 14:59, 5F
我不太懂跟第十戒有何關係...因為他沒有講到auto..

01/19 14:59, , 6F
那個auto在舊的C++幾乎沒有用處,在新的版本有別的用處
01/19 14:59, 6F

01/19 14:59, , 7F
s大,c的auto跟c++11的auto是一樣的?
01/19 14:59, 7F
※ 編輯: amozartea 來自: 60.248.182.130 (01/19 15:01)

01/19 15:01, , 8F
舊 keyword 新用
01/19 15:01, 8F

01/19 15:01, , 9F
http://ppt.cc/ZPoB 照這個來看好像是不同的東西
01/19 15:01, 9F

01/19 15:01, , 10F
看起來好像沒什麼用的感覺- -
01/19 15:01, 10F

01/19 15:01, , 11F
to s大,了解了!
01/19 15:01, 11F
第五戒比較接近我的問題就是了... ※ 編輯: amozartea 來自: 60.248.182.130 (01/19 15:02)

01/19 15:02, , 12F
我覺得問題最大的是「靜態」兩個字,跟static會混亂
01/19 15:02, 12F

01/19 15:03, , 13F
你中間有提到靜態及動態跟stack,所以我認為你看一下
01/19 15:03, 13F

01/19 15:03, , 14F
第十戒應該會有些想法,主要是針對你最後一行
01/19 15:03, 14F

01/19 15:05, , 15F
#1EpBv8oW 不知道這篇對你會不會有所幫助
01/19 15:05, 15F

01/19 15:07, , 16F
我覺得原po特別標記的那句話怪怪的...
01/19 15:07, 16F

01/19 16:22, , 17F
那原本在C裡是跟static是相對的 但現在C並不太需要他
01/19 16:22, 17F

01/19 16:29, , 18F
應還要再分local/global判斷,static與auto/extern相對.
01/19 16:29, 18F

01/19 18:04, , 19F
說的也是 不過static與extern的相對 跟auto的不一樣
01/19 18:04, 19F

01/20 02:41, , 20F
有機會的話,還是多翻一些英文書看看別人怎麼表達這些東
01/20 02:41, 20F

01/20 02:42, , 21F
西. 有時候,中文句子的結構, 是不容易讓新手了解它裡面
01/20 02:42, 21F

01/20 02:43, , 22F
的含意, 而英文, 抓到主詞/動詞/介繫詞等字眼與結構, 就
01/20 02:43, 22F

01/20 02:44, , 23F
比中文還更快抓到原作者要表達的意思.
01/20 02:44, 23F
文章代碼(AID): #1F5xsMwI (C_and_CPP)
文章代碼(AID): #1F5xsMwI (C_and_CPP)