标签:
内存分配方式有几种?
静态存储区 栈 堆 的内存分配
1,从静态存储区域分配内存。程序编译的时候内存已经分配好了,并且在程序的整个运行期间都存在,例如全局变量。
2,在栈上创建。在执行函数时,函数内局部变量的存储单元可以在栈上创建,函数结束时这些存储单元自动被释放。
处理器的指定集中有关于栈内存的分配运算,因此效率比较高,但是分配的内存容量有限。
3,在堆上分配内存,亦称动态内存分配,程序在运行的时候用malloc函数或new运算符申请任意大小的内存,程序员
要用free函数或delete运算符释放内存。动态内存使用非常灵活,但问题也很多。
1 //main.c 2 int a = 0; //全局初始化区 3 char *p1; //全局未初始化区 4 5 main() 6 { 7 static int c =0; //全局(静态)初始化区 8 int b; //栈 9 char s[] = "abc"; //栈 10 char *p2; //栈 11 char *p3 = "123456"; //"123456\0"在常量区,p3在栈上。 12 p1 = (char *)malloc(10); 13 p2 = (char *)malloc(20); //分配得来得10和20字节的区域就在堆区。 14 }
标签:
原文地址:http://www.cnblogs.com/oulton/p/5782394.html