有時我們在我們的c編程中使用這種類型的代碼。常量字符串將存儲在內存中的位置?
char *p = "Sam";
這裏常量字符串「Sam」的地址將被存儲在char指針p中。現在在這裏
我想問一下Sam將要存儲在哪裏?
有時我們在我們的c編程中使用這種類型的代碼。常量字符串將存儲在內存中的位置?
char *p = "Sam";
這裏常量字符串「Sam」的地址將被存儲在char指針p中。現在在這裏
我想問一下Sam將要存儲在哪裏?
標準沒有規定這一點。通常,字符串文字("Sam"
)將存儲在數據部分中的只讀頁面中。
至於p
本身,它取決於它是自動的還是靜態的。
哪裏存儲自動和全局? –
@ Mr.32自動變量存儲在堆棧中。 「全局」或靜態變量存儲在「數據」(或可能是「bss」)中。 – cnicutar
哪個體系結構在'data'部分有隻讀頁面?在Linux/ELF上,字符串文字會與'rodata'節中的其他只讀非代碼數據一起存儲,'rodata'節與text'相同。 –
字符串「Sam」通常會存儲在與全局常量相同的區域的全局內存中。
但是,如果你這樣做:
char p[] = "Sam";
然後,它會在堆棧上,而不是。 (作爲一個數組初始值設定)
可能的重複[哪裏是存儲在C中的常量變量?](http://stackoverflow.com/questions/1576489/where-are-constant-variables-stored-in-c) –
@BrianRoach字符串文字不是一個常量變量。 –