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

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:58:03
为什么说有些对象分配到堆栈上,别的又会分配到堆上.
是不是在程序中声明以个对象只能在这两块内存上分配,还有别的区域嘛
是不是所有语言编写的程序都是这样分配的?
分是少了点,还是麻烦解释一下.
堆是你指的内存吗?
还要没有别的方法分配到堆上

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