gpt4 book ai didi

c++ - 为什么大小为零字节的分配成功?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:35 25 4
gpt4 key购买 nike

这类似于 What does zero-sized array allocation do/mean?

我有以下代码

int *p = new int[0];
delete []p;

p 获取地址并正确删除。

我的问题是:为什么 C++ 标准首先允许分配零字节?为什么它不抛出 bad_alloc 或一些特殊异常?

我认为,这只是推迟了灾难性的失败,让程序员的日子不好过。因为如果要分配的大小是在运行时计算的,并且如果程序员假设其分配正确并尝试向该内存写入一些内容,最终会破坏内存!崩溃可能发生在代码的其他地方。

编辑:它根据零大小请求分配了多少内存?

最佳答案

为什么你希望它失败?如果程序员试图读/写不存在的元素,那么这是一个错误。初始分配不是(这与例如 int *p = new int[1]; p[1] = 5;)没有什么不同。

关于c++ - 为什么大小为零字节的分配成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4133422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com