0からの、超初心者C++相談室at TECH0からの、超初心者C++相談室 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト411:デフォルトの名無しさん 21/11/07 11:43:59.55 cdTTDz5e.net 実装依存 普通は出来ない 412:デフォルトの名無しさん 21/11/09 14:46:05.51 t/ZCl1K7.net 普通でなく指定したバイト数以上のメモリを確保しようとしたら例外が上がる実装例 #include <iostream> #include <vector> #include <memory> using namespace std; #define MAX_SIZE 100 template <class T, class Alloc=allocator<T>> class SizeLimitedAllocator { public: typedef T value_type; T *allocate(size_t n) { if (n > MAX_SIZE) throw bad_alloc(); return allocator_traits<Alloc>::allocate(allocator_, n); } void deallocate(T *p, size_t n) { allocator_traits<Alloc>::deallocate(allocator_, p, n); } private: Alloc allocator_; }; int main() { vector<char,SizeLimitedAllocator<char>> vec(MAX_SIZE); try { vec.resize(MAX_SIZE+1); } catch (bad_alloc& e) { cerr << e.what() << endl; } return 0; } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch