博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈c语言程序为什么需要内存 栈又是什么?
阅读量:4656 次
发布时间:2019-06-09

本文共 1686 字,大约阅读时间需要 5 分钟。

 

 

1 1。关于内存(程序的执行需要内存的支持) 2     (1)内存本身在物理上是硬件器件,由操作系统提供 3     (2)内存的管理最终由操作系统统一管理。为了能过便捷的管理内存(酒店管理房间 是不是分很多不同的类型和待遇呢),同样操作系统提供了多种的机制来让了多种机制来让我们应用程序使用内存。这些机制彼此不同,各自有各自的特点,我们程序根据自己的实际情况来选择某种方式获取内存(在操作系统处登记这块内存的临时使用权限)、使用内存、释放内存(向操作系统归还这块内存的使用权限)。也就是在进入酒店拿到钥匙或者卡,然后就可以进入一个编号为XX的房间,也就是你此时有临时的使用权限比如为一晚,第二天时间一到你就的归还钥匙或者卡,也就是释放内存。 4 2。C语言能够获取内存的三种方式: 5     栈 堆 数据区 6 3。关于栈 7     spec1: 8     运行的时候自动分配而且自动回收,程序员不用人工的去干预 9     spec2:反复使用10     栈内存在程序中就是一块空间 程序反复使用这块空间11     spec3:脏内存12     为啥是脏的呢,反复使用,使用了就算了还不去清理,操作系统也不会帮你打理,哪有大哥给你做饭还洗碗的。因此分配到的时候保留的是原来的值,所以啊,变量定义最好初始化,不然出事儿都不知道啥情况13     spec4:临时的(函数不能返回栈变量的指针,因为这个空间是临时的,注意了,很多时候我们想得到变量的地址,取出来用指针指向它,然后操纵它,但是这个之后,一旦其他的函数因为也是在栈中,很有可能就会取代刚才那块空间,这样就得不到理想的结果)14     程序一执行完,你达到了目的,你就可以走了,让给其他的人也可以用这块空间。看看,多么人性化15 16 #include 
17 18 19 // 函数不能返回函数内部局部变量的地址,因为这个函数执行完返回后这个局部变量已经不在了20 // 这个局部变量是分配在栈上的,虽然不在了但是栈内存还在还可以访问,但是访问时实际上这个21 // 内存地址已经和当时那个变量无关了。22 int *func(void)23 {24 int a = 4; // a是局部变量,分配在栈上又叫栈变量,又叫临时变量25 printf("&a = %p\n", &a);26 return &a;27 }28 29 void func2(void)30 {31 int a = 33;32 int b = 33;33 int c = 33;34 printf("in func2, &a = %p\n", &a);35 }36 37 void stack_overflow(void)38 {39 int a[10000000] = {
0};40 a[10000000-1] = 12;41 }42 43 void stack_overflow2(void)44 {45 int a = 2;46 stack_overflow2();47 }48 49 50 int main(void)51 {52 //stack_overflow();53 stack_overflow2();54 /*55 int *p = NULL;56 p = func();57 func2();58 func2();59 printf("p = %p\n", p);60 61 printf("*p = %d.\n", *p); // 证明栈内存完了后是脏的62 */ 63 return 0;64 }

学习笔记,嘻嘻,感觉不错。勿喷~~

转载于:https://www.cnblogs.com/lanjianhappy/p/6045306.html

你可能感兴趣的文章
接口测试
查看>>
Android Studio+SVN配置生成apk文件
查看>>
程序员的优势 生活的核心问题是——你想要什么?体面的?有地位的?安逸的?有事业的?有激情的?家庭的? 我的生活目标是简单、自由、自足...
查看>>
Linux 定时任务命令Crontab参数详解
查看>>
S5PV210开发系列四_uCGUI的移植
查看>>
【TCP/IP 合约】 TCP/IP 基金会
查看>>
Floodlight Controller 路线原则
查看>>
System.setProperty()
查看>>
快播遭版权清算,小米为何“兔死狐悲”?
查看>>
美丽的表格样式(使用CSS样式表控制表格样式)
查看>>
两个常用的SQL语句拾零
查看>>
旧工程适配iOS6和iPhone5的一些故事
查看>>
xcode禁用代码分析的警告和内存泄漏
查看>>
代码统计利器--CLOC
查看>>
Responder对象
查看>>
[转]Delphi 关键字详解
查看>>
从判断质数说起
查看>>
CSS white-space属性详解
查看>>
C 语言实例 - 计算平均值
查看>>
无线wifi
查看>>