读书人

new的分配机制?该怎么解决

发布时间: 2012-03-04 11:13:33 作者: rapoo

new的分配机制?
请问C++中,new的分配机制是不是先定义,然后,用多少空间,才分配多少空间,在装入数据时分配?
例如:long* primes=new long[100]
   运行程序时是一次就分配100个空间,还是用多少空间,才分配多少空间,在装入数据时分配呢?

[解决办法]
一般情况下 long a[100]是在栈里分配空间,是静态的,编译前必须确切给定分配的大小;
而long* primes = new long[100]是在堆上动态分配,也就是说可以是在程序运行时再分配,控制权在程序员手里,但也必须去手动释放,不像在栈上分配的空间不用时自动就释放掉了,new的空间要配合delete释放

××××××××××××××××××××××××××××××××××××××
栈里分配的空间应该是有局部生命期的,而不是静态的,在栈区。new管的则是动态生命期的,在堆区。
-----------------------------------------------
是的,long a[100]在栈里分配,有作用域限制,不用程序员去主动释放.new在heap上分配,需要程序员去释放

读书人网 >C++

热点推荐