C程序中变量的段?
每个表达式存储在内存中的什么位置? 常量变量存储在哪里C程序中变量的段?,c,memory,C,Memory,每个表达式存储在内存中的什么位置? 常量变量存储在哪里 #include<stdio.h> int a = 0; // initialized data segment char arr[10] = "hello"; // initialized data segment const int k = -1; // int* gptr = &a; // int main() {
#include<stdio.h>
int a = 0; // initialized data segment
char arr[10] = "hello"; // initialized data segment
const int k = -1; //
int* gptr = &a; //
int main()
{
const int m = 31; //
int n; //
int* ptr; //
ptr = malloc(1024); // heap segment
char* ptr2 = &arr; //
for(n = 0; n<1024; ++n) //
printf("%d ", n); //
}
#包括
int a=0;//初始化数据段
char arr[10]=“你好”//初始化数据段
常数int k=-1//
int*gptr=&a//
int main()
{
常数int m=31//
int n//
int*ptr//
ptr=malloc(1024);//堆段
字符*ptr2=&arr//
对于(n=0;nGCC会将常量存储在文本部分。只有操作系统内核知道它们存储在哪里。或者您可能会选择.data和.rodata之类的可执行文件段?或者您的意思是堆中的谁和堆栈中的谁?我们通常会说。实际存储内容的位置至少在某种程度上是特定于实现的。在C,k中
只是一个受限全局变量(不能合法修改)。它可能存储在只读段中,但更可能不是;它可能与其他全局变量位于同一段中。k不会被编译器优化掉吗?@MarioTheSpoon是的,k
可能被优化掉,因为它不在这里的代码中使用,但这取决于编译器和编译标志。