在计算机中,每个程序的都有自己的内存空间,而且每个程序的内存空间都是物理的互相隔离的。但是每个程序的内存空间又分为4个内存区,分别是:栈区、堆区、数据区、代码区。
栈区: 存放的是局部变量、函数的参数、返回值等临时性的数据,栈区的存储空间是有一定的大小限制的;
堆区: 存放的用户自己分配的空间,堆区的内存空间比较大;堆区的内存空间需要用户自己分配和释放,如果用户分配了空间忘记了释放,就会造成内存泄漏。
数据区: 存着这全局变量、静态变量、常量。
代码区: 存放着代码,这部分内存区域是只读的。


下面通过一个程序来查看:
int global_i = 123;
int testSum(){
int a = 1;
int b = 2;
return a + b;
}
int main(){
char ch = 'x';
int i = 0;
long l = 0;
char ch2 = 'y';
static int static_i = 99;
static int static_j = 98;
int* i_new = new int;
printf("栈区的空间:ch 地址:%d\n", &ch);
printf("栈区的空间:i 地址:%d\n", &i);
printf("栈区的空间:l 地址:%d\n", &l);
printf("栈区的空间:ch2 地址:%d\n", &ch2);
printf("堆区的空间:i_new 地址:%d\n", i_new);
printf("数据区的空间:static_i 地址:%d\n", &static_i);
printf("数据区的空间:global_i 地址:%d\n", &global_i);
printf("代码区的空间:testSum 地址:%d\n", testSum);
return 0;
}
运行结果:
栈区的空间:ch 地址:7338115
栈区的空间:i 地址:7338108
栈区的空间:l 地址:7338104
栈区的空间:ch2 地址:7338114
堆区的空间:i_new 地址:15089360
数据区的空间:static_i 地址:10694684
数据区的空间:global_i 地址:10694680
代码区的空间:testSum 地址:10686464
以上!
aaa

本文介绍了计算机程序内存的四个主要区域:栈区、堆区、数据区和代码区,并通过一个示例程序展示了这些区域如何存储不同类型的数据。
539

被折叠的 条评论
为什么被折叠?



