我应该什么时候使用new-operator
在我的示例中,我使用两种不同的方法得到相同的结果:
#include <iostream>
int main() {
int *p1;
int n1 = 5;
p1 = &n1;
int *p2;
p2 = new int;
*p2 = 5;
std::cout << *p1 << std::endl;
std::cout << *p2 << std::endl;
return 0;
}发布于 2013-05-30 08:12:33
使用动态分配的内存的目的是以下一项(或多项)
new手动创建的,并在用户对对象类型的desire.delete手动销毁。例如,你可以把多态对象的实际类型放在run-time.上分配的大型输入输出缓冲区
在您的特定示例中,这些原因都不适用,这意味着在那里使用动态内存是没有意义的。
发布于 2013-05-30 16:25:27
考虑到最近的C++11和即将到来的C++14标准,在使用带有垃圾收集的语言进行编程时,您应该主要使用new运算符。对于这些语言来说,这是很自然的。但在现代C++中,您可以(而且通常都应该)避免直接分配内存。我们现在有了一组很好的智能指针。
发布于 2013-05-30 06:58:26
如果要从堆而不是堆栈进行分配,请使用new。或者提升一个抽象级别。当您需要在分配内存的函数(更准确地说是作用域)退出之后(在线程的情况下),需要将分配的内存保持分配状态,请使用new。
https://stackoverflow.com/questions/16825229
复制相似问题