首页 » 技术SOS » 嵌入式系统 » 中间件和软件库 » 为什么说有些对象在堆栈上分配,还有些分配到别的内存上?

为什么说有些对象在堆栈上分配,还有些分配到别的内存上?

菜鸟
2007-10-26 23:18:18
为什么说有些对象分配到堆栈上,别的又会分配到堆上. 是不是在程序中声明以个对象只能在这两块内存上分配,还有别的区域嘛 是不是所有语言编写的程序都是这样分配的? 分是少了点,还是麻烦解释一下. 问题补充:堆是你指的内存吗? 还要没有别的方法分配到堆上
关键词: 堆栈, 内存  

最佳回复

高工
2007-10-26 23:21:13
1楼

这里所谓分配堆栈、分配内存只是对应直接创建和用指针创建。 例如: int a; /*分配到堆栈*/ int *a = (int *) malloc (sizeof(int));/*分配到内存*/ 一般来说,分配到堆栈上的对象在其所在的一部分退出时,系统自动释放内存,例如: void aaa () { int a; }/*当程序执行完这里,自动释放内存*/ 但用指针申请的内存通常需要手动销毁,以防内存不足: void aaa () { int *p = (int *) malloc (sizeof (int)); /*........*/ free (p); /*需要手动释放内存*/ } 你应该知道,所谓堆栈只是我们对内存上的非指针变量的空间的称呼(但这区别于算法中的堆栈)