1
A
回答
2
0
5
p是一個局部變量,通常駐留在堆棧上。
該字符串存儲在編譯器決定存儲它的任何地方。通常,它既不是堆棧也不是堆,而是位於可執行映像的數據段的只讀區域。
2
除非你的編譯器的文檔明確說void main()
是一個合法的簽名,使用int main(void)
代替:
int main(void)
{
char *p = "hello";
return 0;
}
正是爲p
內存和"hello"
分配將實施而變化的字符串。對於ELF和PE/COFF格式,p
的存儲器將在main
的堆棧幀的內部,而"hello"
的存儲器將爲只讀數據段(PE/COFF的.rdata
,ELF的.rodata
)。
相關問題
- 1. 函數指針存儲在哪裏?
- 2. Wrtiting字符串內存流 - 指向字符串的指針
- 3. 指向字符串的指針向量
- 4. 指針指向在C的字符串指針數組++
- 5. 指向字符串的指針陣列
- 6. 指向字符串的指針
- 7. 指向字符串C的指針
- 8. 傳遞指向字符串的指針
- 9. 指向字符串的指針數組
- 10. 指向字符串指針的數組
- 11. 指向字符串的指針
- 12. 指針,指向函數的字符串
- 13. 指向字符串的指針 - C
- 14. 指向字符串的指針
- 15. 投射指向int的指針/存儲指向T的指針
- 16. 使用指向字符串的指針初始化指向字符串中的字符的指針
- 17. 指針數組存儲字符串c
- 18. 二維指針存儲字符串
- 19. 在字符指針中存儲字符
- 20. x86堆棧指針指向哪裏?
- 21. 設置後幀指針指向哪裏?
- 22. 存儲在指向C中多個字符串的指針數組中的單個字符串存在問題
- 23. 如何填充指針指向另一個數組中存儲的字符串的字符指針數組?
- 24. 指向字符的指針
- 25. C指針,指向和字符串
- 26. 指針指向字符串和STRCMP
- 27. C++,SQLite - 指向字符串的指針的指針
- 28. Where /指針指向的字符串如何存儲在文件中?
- 29. 指定字符串指向字符指針
- 30. 內存故障和指向字符串的指針
'void main()'! – Marlon
例如,在gcc + linux環境下,「hello」位於'.rodata'部分。 – Stan