Re: [問題] 有需要檢查 new 失敗的情形嗎?
用 new(std::nothrow) 好像解決不了問題耶
因為使用其他函式庫時,一樣得處理 new 失敗的問題
舉例來說
#include <new>
#include <string>
int main()
{
// 要兩個 buffer,長度皆為 1024
char* buffer1 = new(std::nothrow) char[1024];
string buffer2;
buffer2.reserve[1024];
// 要處理 buffer1 new 失敗的問題嗎?
// 如果要處理 buffer1 new 失敗,則 buffer2 new 失敗的情況也要處理
// 不然 buffer2 內部 new 失敗,程式一樣會當掉
// 可是 string 內部是 throw exception
// 那 buffer1 寫 new(std::nothrow) 就沒意義了
// 反正 buffer2 還是得處理 std::bad_alloc exception
delete[] buffer1;
return 0;
}
這問題也不可能說不用函式庫就能解決
寫 windows 程式還是很難不用 windows API 吧?
※ 引述《jerohands (這就是人生啊)》之銘言:
: 舉一個我慣用的寫法:
: #include <new>
: ex.
: int *p = new(std::nothrow) int [10];
: if(p == NULL)
: {
: // error handling
: }
: 希望對你有幫助。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.170.53.62
→
06/09 11:53, , 1F
06/09 11:53, 1F
→
06/09 11:54, , 2F
06/09 11:54, 2F
→
06/09 11:55, , 3F
06/09 11:55, 3F
推
06/09 12:30, , 4F
06/09 12:30, 4F
※ 編輯: os653 來自: 218.170.53.62 (06/09 12:32)
→
06/09 12:31, , 5F
06/09 12:31, 5F
→
06/09 12:34, , 6F
06/09 12:34, 6F
→
06/09 12:35, , 7F
06/09 12:35, 7F
→
06/09 12:56, , 8F
06/09 12:56, 8F
推
06/09 13:09, , 9F
06/09 13:09, 9F
→
06/09 13:09, , 10F
06/09 13:09, 10F
→
06/09 13:10, , 11F
06/09 13:10, 11F
→
06/09 13:10, , 12F
06/09 13:10, 12F
推
06/09 13:13, , 13F
06/09 13:13, 13F
→
06/09 13:13, , 14F
06/09 13:13, 14F
→
06/09 13:13, , 15F
06/09 13:13, 15F
→
06/09 13:15, , 16F
06/09 13:15, 16F
→
06/09 13:16, , 17F
06/09 13:16, 17F
推
06/16 01:40, , 18F
06/16 01:40, 18F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 5 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章