动态存储区(堆)、动态存储区(栈)、静态存储区、程序代码区

 

动态存储区(堆)、动态存储区(栈)、静态存储区、程序代码区

 

动态存储区(堆):(动态分配)

malloc动态分配在heap堆区。

动态存储区(堆),程序员自己分配自己释放。

 

动态存储区(栈):(动态分配)

自动变量、const变量在stack栈区。

动态存储区(栈),系统自动分配释放。

 

静态存储区:(静态分配)

extern全局变量,在static静态存储区。

静态存储区,一旦分配,不会被回收,可读可写

 

程序代码区:(静态分配)

main函数、其他函数在code程序代码区。

程序代码区,一旦分配,可读不可写,不可改变

 

堆和栈

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 
 3 #include<stdio.h>
 4 #include<stdlib.h>
 5 
 6 main()
 7 {
 8     void *p1 = malloc(20);
 9     void *p2 = malloc(30);
10     printf("%x,%x\n", &p1, &p2);//地址在栈上
11     printf("%x,%x\n", p1, p2);//在堆区
12 
13     system("pause");
14 }

 

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 
 3 #include<stdio.h>
 4 #include<stdlib.h>
 5 #include<windows.h>
 6 
 7 main()
 8 {
 9     //堆,不知道要用多少内存的时候,需要手动释放
10     //堆可以处理很大的内存
11     //堆就是malloc或者realoc或者calloc分配的内存
12 
13     while (1)
14     {
15         void *p = malloc(1024 * 1024 * 30);
16         Sleep(2000);
17         free(p);
18         Sleep(2000);
19     }
20 
21     system("pause");
22 }

 

 

 1 #define _CRT_SECURE_NO_WARNINGS
 2 
 3 #include<stdio.h>
 4 #include<stdlib.h>
 5 
 6 main()
 7 {
 8     //栈,用完了内存就立刻回收,再次利用
 9 
10     while (1)
11     {
12         double x[1024 * 50 * 200];
13     }
14 
15     system("pause");
16 }

 

转载于:https://www.cnblogs.com/denggelin/p/5540120.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值