我试图bad_alloc
通过将一些否定参数传递给new[]
. 当传递小的负数时,我得到了我所希望的 - a bad_alloc
。但是,当通过时-1
,我可以看到我的对象被构造了数千次(我在构造函数中打印静态计数器)并且应用程序以段错误终止。
new[]
将有符号整数转换为size_t
,-1
的最大值size_t
也是-2
,maximum - 1
以此类推。
那么为什么new[]
在接收到一些巨大的数字时抛出异常,但在接收到最大值时尝试分配size_t
呢?1111...1
和 和1111...0
有什么不一样new[]
?:)
提前致谢!