拆卸下面的代碼後:爲什麼向主函數聲明的本地字符串是Rodata段存儲器的一部分?
#include <stdio.h>
static const char HELLO1[] = "Howdy";
int main(){
char hello2[6]="hello\0";
printf("%s",string);
}
我可以看到字符串HELLO1被宣佈爲.RODATA段常數變量聲明爲這部分是可以理解的。
但是,hello2也被聲明爲.RODATA段。但是局部變量被聲明爲Stack直接對嗎?
你能解釋一下爲什麼這個字符串被聲明爲這個段嗎?
答案取決於使用的編譯器/平臺 - 哪兩個都沒有。 – chux
公爵,你使用的編譯標誌是什麼?然而,下面的@NulledPointer註釋並沒有在堆棧中創建'hello2';他們可能已經發射了一個堆疊的弦。我注意到'clang'也會對聚合數據類型做到這一點。 –