三种内存分配方式:
1)从静态内存区分配。
程序中的全局变量与static 变量,程序在编译的时候已经分配好,这块内存在程序的整个运行阶段都有效。
2)从栈区分配
函数中的局部变量由此方式分配内存,函数结束时这些存储单元被释放。效率高,但分配的容量有限。
要注意函数结束时存储单元要被释放,因此这种情况是错误的:
char *Func()
{
char a[] = “funcreturn”;
.
.
.
return a;
}
3)从堆区创建
也成动态分配内存,编程人员可以用malloc、new申请任意多的内存,并负责在何时用free、delete释放内存。动态内存的生存期由编程人员决定,使用灵活,但也最复杂。