Вопрос Каким образом можно реализовать подобную вещь для выделения памяти? C++

Регистрация
1 Сен 2013
Сообщения
93
Репутация
0
Спасибо
0
Монет
0
исключения использовать нельзя

когда выделяем память, нет желания постоянно писать что-то такое

C * c1 = new C;
if(!c2){
cerr<<out_of_memry;
}

C * c2 = new C(10,20,"str");
if(!c2){
cerr<<out_of_memry;
}

хотелось бы так

C * c1 = my_new();
C * c2 = my_new(10,20,"str");

template<typename T>
T * my_new(...){
T * o = new o(параметры);
if(o)return o;

std::cerr << outofmemry;
return nullptr;
}

Какова идея в целом?
Хороша ли реализация шаблоном?
Как передать произвольное количество параметров для конструктора?
 
По-моему, это лишнее. Тебе же эта память нужна, и тогда ее должно быть достаточно. Если ты не сумеешь ее выделить, то что дальше-то делать? А если без нее можно было обойтись, значит, надо было обойтись...
 
в плюсах не силен, но правильно это работать не будет! делать надо так try { int* myarray= new int[100]; } catch (std::bad_alloc& bad) { std::cerr << bad.what() << std::endl; } или так раз вы проверяете указатель char* p = new (std::nothrow) char [2048]; if (!p) { std::cout << "failed!
"; } else { std::cout << "succeeded!
"; delete[] p; }
 
Самое главное, где-нибудь внутри функции не забудь обязательно добавить delete your_new [ ] , а то память заполнишь всю и надолго)))
 
ты сначала реализуй, доведи до стабильности, а потом выкладывай... теоретические выкладки, мало кому интересны..
 
Назад
Сверху