2
|
Spring E. Thing · 技术社区 · 1 年前 |
![]() |
1
3
在C++中,结构本身是 总是 固定尺寸;一些编译器支持可变长度结构作为扩展,但它不是语言标准的一部分,而且这些类型都不需要它。
不,使用指针只会进一步分割内存。考虑指针的主要原因是如果您想共享
相同的
跨结构的多个实例的容器(例如
如果将它们存储为原始值,而不是指针,则副本(堆栈分配或其他方式)将(通常)
深的
各种收藏的副本。如果你改为使用
附加说明:
C++结构和类是
完全相同的
,除了
一
区别:结构成员默认具有公共可见性,类默认为私有可见性。两者都可以在堆栈上(如果声明为非-
但在您提到的所有容器类型中,存储在堆栈/堆/全局内存上的位都是微不足道的,只有少数指针。它们包含的所有数据都在堆上,由类本身自动管理。当复制到该类型的新实例时,会分配新的堆内存,复制所有包含的数据(这可能会调用额外的堆分配),然后这两个实例完全不相关(一些复制构造函数可能不会像
|
![]() |
CocoaMix86 · 变量超出作用域后未回收内存[重复] 4 月前 |
![]() |
Yousef Dawood · javascript中的不变性是什么意思 10 月前 |
![]() |
SkyBlue · Java Spring服务的内存/垃圾收集器问题 10 月前 |
![]() |
f99 · 需要在内存位置使用指针-bad_alloc返回对象实例的建议吗? 11 月前 |