【发布时间】:2011-06-03 05:09:03
【问题描述】:
如果我使用 std::vector 或 std::string,我是否也需要在堆中分配它们。例如:
int main() {
std::vector<int>* p = new std::vector<int>();
delete p;
}
在 Java 和 C# 中,对象总是使用这种语法在堆中分配。我想知道在 C++ 中做同样的事情是否有效?因为每当我在 C++ 中创建一个类时,我通常会在堆栈和堆变量之间混合使用。比方说:
class simple {
int a;
double b;
std::string c;
std::vector<int> d;
....
};
我想知道在 C++ 中使用对象时应该遵循的最佳做法是什么?
- 所有数据都应该在堆上分配?
- 所有数据都可以混合吗?
- 或者...
谢谢,
陈
【问题讨论】:
-
实际上,使用 C# 中的语法,对象不一定在堆上。如果是值类型,就会入栈。
标签: c++