为什么说有些对象分配到堆栈上,别的又会分配到堆上.
是不是在程序中声明以个对象只能在这两块内存上分配,还有别的区域嘛
是不是所有语言编写的程序都是这样分配的?
分是少了点,还是麻烦解释一下.
问题补充:堆是你指的内存吗?
还要没有别的方法分配到堆上
最佳回复
1楼
这里所谓分配堆栈、分配内存只是对应直接创建和用指针创建。 例如: int a; /*分配到堆栈*/ int *a = (int *) malloc (sizeof(int));/*分配到内存*/ 一般来说,分配到堆栈上的对象在其所在的一部分退出时,系统自动释放内存,例如: void aaa () { int a; }/*当程序执行完这里,自动释放内存*/ 但用指针申请的内存通常需要手动销毁,以防内存不足: void aaa () { int *p = (int *) malloc (sizeof (int)); /*........*/ free (p); /*需要手动释放内存*/ } 你应该知道,所谓堆栈只是我们对内存上的非指针变量的空间的称呼(但这区别于算法中的堆栈)