Форум программистов, компьютерный форум CyberForum.ru

Динамическое выделение памяти - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести все 6-ти значные числа, которые делятся без остатка на сумму своих цифр http://www.cyberforum.ru/cpp-beginners/thread643468.html
Вывести все 6-ти значные числа, которые делятся без остатка на сумму своих цифр. подсчитать кол-во Решаю ее в таком ключе, подскажите, пожалуйста, в каком месте ошибка и как изменить алгоритм решения? int sum=0, kol=0; for (int i=100000; i<=999999; i++) { if (i%sum==0) {
C++ Сложение разных типов У меня из файла в переменную int считывется число.. Мне нужно занести в переменную string это число + строка. Например int i; string str; str = "STROKA" + i; http://www.cyberforum.ru/cpp-beginners/thread643467.html
fflush(stdin) C++
В одной из ранее открытых тем, было сказано, что fllush(stdin) лучше не использовать. Чем можно заменить эту функцию?
неправильность вызова qsort C++
#include <iostream> #include <iomanip> using namespace std; struct User { int id; char nickname; int karma; };
C++ Массив http://www.cyberforum.ru/cpp-beginners/thread643447.html
Здравствуйте. Заранее прошу прощения, наверно вопрос баянистый. Пытался узнать длину массива таким способом: int lenght = sizeof(a)/sizeof(int);Здесь а - целочисленный массив. Дело в том, что в функции main длина вроде как считается, а вот если я массив передаю в функцию (например сортировки), там sizeof(a) почему то равен sizeof(int). Заинтересовавшись этим, я просмотрел реализованные...
C++ Нужна консультация #include <iostream> #define N 30 using namespace std; int main() { int a; int i,k; float sum; for (i=0; i<N; i++) if ( a < 0) if (a/N) k+=a; подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
28.08.2012, 15:23     Динамическое выделение памяти
никак. деструктор нельзя звать для неполностью сконструированного объекта.
откат делается за счет идиомы RAII (Resource allocation is initialization). Как уже сказали, мемберы, для которых выделяется память лучше заворачивать в смарт поинтеры. В этом случае все отработает как надо:

C++
1
2
3
4
5
6
7
8
9
10
11
12
class Foo
{
   std::auto_ptr<int> m_ptr1;
   std::auto_ptr<int> m_ptr2;
 
public:
   Foo()
     : m_ptr1(new int(1))
     , m_ptr2(new int(2)) // вот тут летит исключение
   {
   }
};
В такой ситуации объект m_ptr1 будет полностью сконструирован, а m_ptr2 - нет. Т.к. деструкторы зовутся для полностью сконструированных объектов а m_ptr1 - как раз такой объект, а не голый указатель, для него деструктор позовется несмотря на то, что деструктор класса Foo вызван не будет. Деструктор auto_ptr<T> как раз позовет delete для указателя, который хранится в этом смарт-поинтере
 
Текущее время: 06:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru