在这段代码中:
const char * str = "hello world";
如果我理解正确,指针是4或8个字节,我想这将在堆栈上分配.但分配和存储"hello world"的内存在哪里?
或者究竟str指出了什么?
pad*_*ddy 15
它没有分配.它通常存储在程序的代码段或堆栈中.这取决于编译器.无论哪种方式,它都指向以null结尾的字符数组.
C没有堆栈或堆.C表示这"hello world"是一个字符串文字,字符串文字具有静态存储持续时间.
Essentailly,编译好像你写的那样:
const static char helloworld[12]
= {'h', 'e', 'l', 'l', 'o',' ','w', 'o', 'r', 'l', 'd', '\0'};
const char * str = helloworld;
Run Code Online (Sandbox Code Playgroud)
该数组通常位于内存的某些只读部分,可能位于可执行代码附近.
根据定义的位置,str将位于堆栈或全局内存空间中.
| 归档时间: |
|
| 查看次数: |
6189 次 |
| 最近记录: |