c++ - 指向零长度数组的指针的属性
问题描述
考虑
int main()
{
auto a = new int[0];
delete[] a; // So there's no memory leak
}
在复制初始化和删除之间,您可以读取指针a + 1
吗?
此外,该语言是否允许编译器设置a
为nullptr
?
解决方案
根据编辑问题 3178的结果,最近 CWG 反射器讨论new int[0]
产生了当前所谓的“过去的”指针值。
因此a
不能为空,并且a + 1
未由[expr.add]/4定义。
推荐阅读
- android - 替换 BottomNavigationView 中的选项卡
- mysql - laravel 中的批量插入或更新
- javascript - Typescript自动完成在VSCode中不起作用
- vb.net - 从 json 模式生成 vb 类的有效方法是什么?
- .htaccess - .htaccess Header 命令在使用转义 URL 时产生错误 500
- batch-file - 用批处理删除文本文件的行
- amazon-web-services - 具有跨账户 S3 访问的 AWS CodeDeploy 失败
- sqlite - sqflite颤动中的AND语句
- java - 我如何有条件地阻止用户导航到 Eclipse E4 RCP 应用程序中的不同视图/部分?
- html - HTML 录音权限