c++ - c++中类成员的内存分配
问题描述
我在这里有一个简单的问题,
template <class T, MAX_ITEMS>
Class A{
public:
T buf[MAX_ITEMS];
}
A<class_name, 1000> obj_A;
当我使用最后一行声明 obj_A 时,它是否保留了空间?对于 sizeof(class_name)*1000 或仅当我使用 new 关键字声明 obj_A 时才会保留?
解决方案
它保留空间吗?对于 sizeof(class_name)*1000 或仅当我使用 new 关键字声明 obj_A 时才会保留?
是的,它将为 1000 个该类型的元素静态分配足够的内存。如果您的对象具有静态/线程存储持续时间,那么它可能会起作用。如果您的对象具有自动存储持续时间,根据类型和堆栈大小,可能会导致堆栈溢出。
或者仅当我使用 new 关键字声明 obj_A 时它才会保留?
如果使用new
关键字,它将动态分配内存(动态存储持续时间)。通常,您如何创建对象并不重要。如果你成功地创建了一个A<class_name, 1000>
类型的对象,它肯定有空间容纳 1000 个类型class_name
的对象。
在此处了解有关存储期限的更多信息。
推荐阅读
- unit-testing - 不能使用 Mockito when and thenReturn
- python - ADX 图表不清楚
- html - 我想点击屏幕会关闭侧边栏
- caching - 2 路集关联映射可以只有一组吗?
- javascript - Javascript 元素翻译和生命周期
- c# - 如何在组合框中显示具有特定属性值的表格元素?
- python - Django outputting errorlist as string instead of html
- deep-learning - 关于将Alpha zero general应用于不同游戏的问题
- c - 如何在 C 中管理我的程序中的密码错误?
- excel - 将一列条件镜像到另一列