我正在学习 C++,我遇到了两个新案例:
int * x = new int
动态创建对象x
. (int
当然可以换成其他类型)。int *y = new int[<other variable>]
动态创建数组对象y
.
可以理解,第二种情况对于创建一个我们在编译时不知道其大小的数组非常有用。
问题
有没有真正需要第一种情况的实际有用的例子?我的理解有什么问题吗?
最佳答案
想象一些将异步完成的任务,并且将产生一个整数结果。您需要能够为异步任务逻辑提供一个指向存储结果的整数的指针,并且您需要确保该整数在异步任务期间位于内存中的同一位置。
您需要动态分配一些包含该长生命周期整数的结构。如果该整数确实是您所需要的全部,那么动态分配该整数本身可能是有意义的。
然而,在现实中,存在一些问题:
- 为此使用
unique_ptr
或shared_ptr
可能更有意义,以使生命周期的管理更加理智。 - 在几乎所有实际情况下,您需要的不仅仅是那个整数。例如,您可能需要某种方式来同步安全访问该整数或执行任务的某些句柄。
关于c++ - 是否有一个 int* x = new int 实际上有用的重要示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54044687/