我試圖通過向new[]
傳遞一些否定參數來測試bad_alloc
異常。當傳遞小負數時,我得到了我所希望的 - bad_alloc
。但是,當通過-1
時,我可以看到我的對象構建了數千次(我在構造函數中打印了靜態計數器),並且應用程序以segfault終止。爲什麼new [-1]產生段錯誤,而new [-2]產生bad_alloc?
new[]
轉換符號整數size_t
,所以-1
是size_t
最大和-2
是maximum - 1
等。
那麼,爲什麼得到了一些巨大的數字時new[]
拋出異常,但會嘗試接收size_t
最大何時分配? 1111...1
和1111...0
之間爲new[]
有什麼不同? :)
在此先感謝!
哪個編譯器/編譯器的版本/ OS/... – xanatos 2012-03-13 09:09:52
那次我錯過了答案,因爲StackOverflow沒有發送任何通知,現在我不能重現問題......我後悔我沒有生成核心轉儲,也沒有調查它......現在我無法重現問題 - 傳遞-1到'新'似乎工作,並拋出異常,而傳遞max int分配了很多的對象,但不seg段。我開始認爲問題在別的地方......我爲他的嘗試給了神祕的加號。 – flyjohny 2012-09-07 10:40:43