c++ - 新和新的区别[ ]
问题描述
int* arr = new int [5];
和 和有什么不一样int* arr = new int();
?
解决方案
int* arr = new int [5];
上面分配了一个 5 的数组int
而不初始化它们,并将其分配给新变量arr
。应该使用 释放数组delete [] arr;
。
int* arr = new int();
上面分配了一个 value-initialized int
,并将其分配给错误命名的 new variable arr
。应该使用释放内存delete arr;
。
访问越界,或试图以错误的方式释放某些东西都会导致Undefined Behavior,这意味着编译器和运行时都没有任何要求。
由于您的程序此后不久就结束了,因此泄漏这些分配以避免制造工作是可以接受的。您应该添加一条评论,说明您是故意这样做的。
推荐阅读
- django - 是否可以在没有 kwargs 的情况下在 django 中定义 success_url
- c# - 事件和代表的对立面?
- sql - 将名称之间的链接列表合并为一列
- oauth - Microsoft Graph 控制台应用程序 - OAuth
- python - 在 Django Rest Framework URL 中通过唯一 ID 而非 PK 获取详细信息
- python - Python3:有没有办法像在 python2 中一样使用 telnetlib,没有 ascii 编码和 b 前缀?
- powershell - 当证书的现有指纹与站点匹配时,我想导入 SSL 证书
- mysql - 如何“复制”特定表中的行(同时自动分配新 ID)?
- linux - 内核 4.x 的 PACKET_MMAP 等价物是什么
- javascript - 即使在暂停时,如何让日期计数器停止在后台运行?任何和所有的帮助表示赞赏