c++ - 如果使用 'new' 来实例化对象而不将其分配给变量,会发生什么情况?

标签 c++ new-operator

想问一下如果我写下面的程序运行程序会怎样

new int[5]; // without assigning it to a pointer.

编译通过。

但是会分配一个 5 * sizeof(int) 内存块吗?

如果是对象呢?

new some_obj_[5]; // without assigning it to a pointer.

some_obj_的构造函数会被调用吗?

最佳答案

new int[5];//without assigning it to a pointer.

是的,将分配一个 5*sizeof(int) 内存块,但您无法访问,因为您没有保存指针。你会发生内存泄漏。

new some_obj_[5];//without assigning it to a pointer.

是的,将有 5*sizeof(some_obj_) 内存块已分配但您无法访问,因为您没有保存指针。 some_obj_ 的默认构造函数将被调用 5 次。这应该是微不足道的验证。根据 some_obj_ 的编码方式,您可能会发生内存泄漏。

关于c++ - 如果使用 'new' 来实例化对象而不将其分配给变量,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14614875/

相关文章:

c++ - 是从动态分配的数组索引超出范围的元素有效

erlang - Erlang 中的 "new"是官方标准的一部分吗?我们应该使用它吗?

java - Java 是否隐式地将构造函数(或对象)与 new 运算符一起使用?

c++ - C++ 的新操作是否可以保证地址返回的对齐?

c++ - 为 QFS 构建 C++ 包装器

c++ - 在 Windows 7 x64 上检测 DVD-RAM 介质是否为空

c++ - 两个 Windows 应用程序可以使用命令行进行通信吗?

c++ - 如何创建一个 for 循环来检查字符串中的每个字符是否为小写字母?

c++ - 优化包含 for 和 if 的 C++ 代码块

javascript - 没有 new 的 JS Power Constructor 和 instanceof