首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问:对象的动态分配

2012-02-29 
请教:对象的动态分配1.vector储存数据的空间是stack还是heep?如果在heap中,对于元素较多时运算速度会否比

请教:对象的动态分配
1.   vector储存数据的空间是stack还是heep?如果在heap中,对于元素较多时运算速度会否比普通数组慢?
2.   现有一个class,里面有一private的数组变量,其值由constructor初始化。如果一函数静态创建该class的对象,那么数组变量应该储存在stack中,如果使用动态分配new,数组变量是否储存在heap中呢?


[解决办法]
1 heap中,要看你要做什么运算了,速度我想是一样的。
2不太明白你的意思
class test
{
char sz[100];
};如果是这样一个类的话
那么在voidfunc()
{
test t;该对象是在stack中,成员变量也在stack中
}

如果test* p =new test则该对象在heap中所有变量也在heap中
[解决办法]
vector只是对template类型数组的封装,“vector储存数据的空间是stack还是heep?”不太懂什么意思,就像问stack是数组还是链表一样,他们一个是逻辑层,一个是物理层的咚咚。。vector可以随机存储,理解成heap还是stack都可以。只不过操作方式不同,stack就push_back,pop_back,heap就push_back,pop_front/
STL比数组效率高,是因为我们不必负责内存的管理,比如申请和释放,大概有内存池的应用。大数据当然建议用STL。
[解决办法]
vector储存数据的空间是stack还是heep?
----------------------------------------------
heap
[解决办法]
2. 现有一个class,里面有一private的数组变量,其值由constructor初始化。如果一函数静态创建该class的对象,那么数组变量应该储存在stack中,如果使用动态分配new,数组变量是否储存在heap中呢?
-------------------------------------------------
如果是动态分配,你的整个对象都在heap上面,所以内嵌的数组也自然在heap上。
[解决办法]
heap

热点排行