VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 827|回复: 7

请教:对象的动态分配

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-13 11:40:01 | 显示全部楼层 |阅读模式
1. vector储存数据的空间是stack还是heep?如果在heap中,对于元素较多时运算速度会否比普通数组慢?
2. 现有一个class,里面有一private的数组变量,其值由constructor初始化。如果一函数静态创建该class的对象,那么数组变量应该储存在stack中,如果使用动态分配new,数组变量是否储存在heap中呢?
回复

使用道具 举报

0

主题

41

帖子

28.00

积分

新手上路

Rank: 1

积分
28.00
发表于 2020-1-17 16:18:01 | 显示全部楼层
1 heap中,要看你要做什么运算了,速度我想是一样的。
2不太明白你的意思
class test
{
char sz[100];
};如果是这样一个类的话
那么在voidfunc()
{
test t;该对象是在stack中,成员变量也在stack中
}

如果test* p =new test则该对象在heap中所有变量也在heap中
回复

使用道具 举报

0

主题

8

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-1-19 10:45:01 | 显示全部楼层
agree to the upstairs.
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-19 11:27:01 | 显示全部楼层
谢谢!因为看到有一些文章提出heap中运行的速度比较慢,今天也把编写的代码改为动态分配后存储速度似乎变慢了,因为数据量十分大(大约有100万个long元素的二维数组)所以希望优化一下存储的代码,请问有何意见呢?
回复

使用道具 举报

0

主题

5

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-20 14:36:02 | 显示全部楼层
vector只是对template类型数组的封装,“vector储存数据的空间是stack还是heep?”不太懂什么意思,就像问stack是数组还是链表一样,他们一个是逻辑层,一个是物理层的咚咚。。vector可以随机存储,理解成heap还是stack都可以。只不过操作方式不同,stack就push_back,pop_back,heap就push_back,pop_front/
STL比数组效率高,是因为我们不必负责内存的管理,比如申请和释放,大概有内存池的应用。大数据当然建议用STL。
回复

使用道具 举报

0

主题

24

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-25 19:00:02 | 显示全部楼层
vector储存数据的空间是stack还是heep?
----------------------------------------------------------------------------------
heap
回复

使用道具 举报

0

主题

24

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-25 19:36:01 | 显示全部楼层
2. 现有一个class,里面有一private的数组变量,其值由constructor初始化。如果一函数静态创建该class的对象,那么数组变量应该储存在stack中,如果使用动态分配new,数组变量是否储存在heap中呢?
-------------------------------------------------------------------------------------
如果是动态分配,你的整个对象都在heap上面,所以内嵌的数组也自然在heap上。
回复

使用道具 举报

0

主题

6

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-13 20:45:02 | 显示全部楼层
heap
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表