除了持续时间之外,这两者之间还有什么不同吗?
int ptr;
int *ptr = new int;
我理解指针的概念,但我看不出用指针对int进行delcaring有多大用处。
如果在创建对象的作用域之外不需要该对象,则可以使用堆栈上的对象。
示例:
int foo(int in)
{
int i = in + 2;
return i;
}
如果需要在创建对象的作用域之外的对象,则可以使用堆上的对象。
int* foo(int in)
{
int* ip = new int(in + 2);
return ip;
}
这是概念上的区别。通常,如果您讨论的是
int* foo()
{
int arr[] = {1, 2, 3, 4};
return arr;
}
该函数将是一个问题,因为它返回的指针一旦函数返回就会无效。
int* foo()
{
int* arr = new int[4]{1, 2, 3, 4};
return arr;
}
这将起作用,因为即使在函数返回之后,返回的指针仍将指向有效的对象。调用函数必须负责释放内存。
从性能的角度可以看出差别。
考虑最坏的情况:
。