指针引发的探究
来源:互联网 发布:新手如何开淘宝店 编辑:程序博客网 时间:2024/05/05 10:14
【程序】
#include<stdio.h>#include<stdlib.h>struct ss{int a[100];double b[200];char s[9];};int main(){printf("int:%d %d\n",sizeof(int),sizeof(int *));int a[100];int *b;b=a;printf("数组:%d %d\n",sizeof(a),sizeof(b));b=(int*)malloc(50000*sizeof(int));printf("malloc:%d\n",sizeof(b));ss c,*d;printf("a struct:%d %d\n",sizeof(c),sizeof(d));char e[2],*f;printf("string:%d %d\n",sizeof(e),sizeof(f));return 0;}
【运行】
【结论】
1.关于变量内存问题
系统中有一个变量区,变量被定义后都罗列到那里,还有一个指针区(或许是和变量放一起的),定义的指针也罗列下来。
但有所区别,变量定义后都是有内存的,有一个安稳的家一样,而指针在有对象之前是空(穷光蛋)的,只有在给指针一个指向
时,它才拥有一个空间。
疑问:这个空间若是由某个变量指派的(如程序的”数组“),它是新生成的还是与变量的是同一个?由malloc生成的空间呢(如程序的”malloc“),是属于指向空间的指针,还是无名的?由上面的程序,似乎指针的空间永远是4,即好像它是不占据空间的?
要是它真的不占据其它的空间,那对于指针的释放内存又是怎么一回事呢?
是不是对于由变量指派而来的空间,它是不能被释放的;malloc生成的空间,有指针指向就是没释放,断了指针就释放??
这样的话,空间本来就在那儿,计算机运行程序要占据空间(内存,是有限的),程序运行时,有它涉足的东西占据的空间,计算机就不会再分配给其它程序了,只有由free()这类的函数申明释放后,这部份内存才是自由的,才可以(完全)给其它程序使用。
对吗???????????????
2.虽然说结构体名,数组名就代表了它的指针,但和一个纯粹的指针还是有区别的,由"数组"和"a struct"得来。
- 指针引发的探究
- 探究c的指针
- 指针的再探究
- 关于ServletOutputStream源代码引发的探究
- 【C++】指针引发的bug
- 由free()引发的对链表的探究(1)
- 由free()引发的对链表的探究(2)
- 一道Integer面试题引发的对Integer的探究
- 一道Integer面试题引发的对Integer的探究
- 由锚点失效引发的hasLayout探究
- 由锚点失效引发的hasLayout探究
- postgres -- 一个问题引发的事务探究(一)
- postgres -- 一个问题引发的事务探究(二)
- 指向栈的指针引发的问题
- 一个指针的引用引发的血案
- 探究二维数组与指针的关系
- 快慢指针的时间复杂度探究
- 指针和内存可能引发的问题
- The 36th ACM/ICPC Asia Regional Dalian Site —— Online Contest &&Dave
- 在Linux上创建PHP4的C++扩展
- Android读写文件
- Oracle 关于 alter parameter 的设置 详解
- hadoop源码编译错误
- 指针引发的探究
- 整理 Object 类(为什么重写 equals 和 hashCode 方法)
- hibernate的集合属性
- ProtoBuf是什么
- 采用Annotation来管理实体类
- 微博开篇作——sql2005数据还原到sql2000的数据库中
- 在linux系统下添加新硬盘
- android打开网站
- 新概念英语 Lesson 16