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

delete[] *pointer vs. delete pointer и утечка памяти - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Название типа объекта typeid http://www.cyberforum.ru/cpp-beginners/thread950796.html
Когда вывожу название типа объекта, то перед ним появляются цифры 4 и 8. что они означают? В низу показал что выводит программа #include <iostream> #include <typeinfo> using namespace std; class Base {
C++ Тема: Структуры. Условие: сделать массив структур, который содержит следующею информацию В радиоателье сохраняются квитанции о заданной в ремонт аппаратуре. Каждая квитанция содержит такую информацию: название группы товаров(телевизоры, радиоприемники и т.д), марка товара, дата приема в ремонт, состояние готовности заказа(сделано, не сделано). Вывести информацию о состояние заказа на поточные сутки для заданной группы товаров. Наименование группы товаров ввести с клавиатуры. http://www.cyberforum.ru/cpp-beginners/thread950789.html
Проверка на расстановку скобок C++
В общем задание такое. Программа (консольная) проверяет каждую строку файла для проверки на расстановку скобок 4 типов ("(" и ")", "", "{" и "}", "<" и ">"), проверка должна учесть парность и вложенность расстановки скобок (как в математических выражениях), другие символы - пропускать без обработки. По результатам проверки формируется файл результатов, каждая строка которого соответствует...
Непонятен текст задания C++
Вот задание: b) Создать абстрактный тип данных (структура) - вектор, который имеет указатель на float и число элементов. Определить функции: инициализации, удаления вектора, установки/ изменения размера, доступа к элементам вектора, вычисления суммы элементов вектора. Для примера, в функции main, организовать поэлементное умножение двух векторов. Не понимаю на счет числа элементов Так как...
C++ Указатели (нужно передать массив в качестве параметра в функцию) http://www.cyberforum.ru/cpp-beginners/thread950771.html
Добрый день! имеется массив array его нужно передать в качестве параметра в функцию, принимающую в качестве аргумента LPVOID: function(LPVOID arr), я делаю так: function(&array), в большинстве случаев все работает, но иногда вылетает - пытаюсь понять, связано ли это с неправильной передачей аргумента, ?или все-таки нужно передавать function(array) без &, массив сам по себе это указатель на...
C++ В чем разница? Скажите в чем разница между двумя кусками кода: std::string a; while ((std::cin>>a)!="Quit") { std::cout<<a; } подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
09.09.2013, 17:08     delete[] *pointer vs. delete pointer и утечка памяти
Cynacyn, Стоит делать как в бусте/STL.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template<typename T>
class counted_ptr
{
  /// implementation
public:
    ~counted_ptr() { delete owned; }
};
 
template<typename T>
class counted_ptr<T[]>
{
    // implementation
public:
   ~counter_ptr() { delete[] owned; }
};
Можно конечно вместо специализации мутить всякие флажки и т.д., но это имхо несколько грустнее. Но этот вариант подойдет очевидно только для варианта, если будет вызвано нечто вроде

C++
1
counted_ptr<int[10]> p(array);
Если инициализировать именно указателем на массив элементов - определить что передали именно указатель на первый элемент массива невозможно. И тут спасет только то, что пользователь должен будет либо сам подавать флажок, либо передавать указатель на функцию (ну или объект), который нужно будет вызвать при удалении (как сделано в boost::shared_ptr к примеру).
 
Текущее время: 15:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru