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

Выделение статической памяти, не используя статические объекты - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Можно ли разширять матрицу без удаления предыдущей http://www.cyberforum.ru/cpp-beginners/thread1246506.html
Интересует вопрос, можно ли разширять матрицу без удаления предыдущей. Покажу сразу пример: Допустим есть некая структура, и так я её первоначально заполняю: var **v; v = new var*;//динамическая матрица for (int i = 0; i < CMY; i++) v = new var; И так CMY - это кол-во строк, а CMX - кол-во столбцов.
C++ Разработать три класса, которые следует связать между собой, используя наследование Разработать три класса, которые следует связать между собой, используя наследование: класс Product, который имеет три элемент-данных - имя, цена и вес товара (базовый класс для всех классов); класс Buy, содержащий данные о количестве покупаемого товара в штуках, о цене за весь купленный товар и о весе товара (производный класс для класса Product и базовый класс для класса Check); класс... http://www.cyberforum.ru/cpp-beginners/thread1246502.html
Запуск деструктора не осуществляется в приведенном коде C++
Добрый день. Написал программу, а в ней не хочет автоматически запускаться, хотя я вроде бы всё правильно делаю. Прошу подсказать, в чём может быть проблема. #include "stdafx.h" #include <conio.h> #include <iostream> using namespace std; class Work { private:
C++ Где в памяти хранится тип указателя?
Привет! Вы не подскажите, где в памяти храниться тип указателя? Ну допустим, у нас x86 и указатель занимает 4 байта, но эти 4-е байта - это ж просто адрес, а где хранится сам тип? Ведь есть же тип указателя, ну не всё же void*, есть же int*, bool*, double*, MyClass* и т.д. Я даже знаю, что есть информация о размере блока, на который указывает указатель как бы, он с каким - то смещением рядом...
C++ Есть ли разница между Visual C++, Borland C++ и C++ Builder? http://www.cyberforum.ru/cpp-beginners/thread1246424.html
Какая разница между этими диалектами, или незнаю как это точно называется. И какой лучше?
C++ Как передать указатель функции, чтобы значение переменной изменилось? Имеются переменная и указатель на нее. int x, *y = &x; Как передать указатель ф-ии, чтобы значение переменной изменилось? подробнее

Показать сообщение отдельно
Убежденный
Системный программист
Эксперт С++
15099 / 6794 / 1073
Регистрация: 02.05.2013
Сообщений: 11,105
Завершенные тесты: 1
24.08.2014, 15:26     Выделение статической памяти, не используя статические объекты
1) Выбросить все синглтоны и статические объекты.

Ибо:

- от них только лишние зависимости;
- проблемы с порядком удаления, не решаемые языковыми средствами;
- static-объекты висят в памяти до самого конца, даже если они больше не нужны.

2) Написать функции Initialize и Shutdown, куда переместить инициализацию и
очистку всех компонентов, требуемых для работы библиотеки. Обе функции сделать
реентрабельными, с подсчетом ссылок, как подобает хорошо спроектированным
библиотекам. Клиентам на C++ дать специальный враппер в стиле RAII (Initialize в
конструкторе и Shutdown в деструкторе).

3) Зависимости классов друг от друга решать через интерфейсы и подсчет ссылок.
При создании объекта давать ему одну ссылку. Для удаления использовать release, в
явном виде delete не звать. Если кто-то захочет пользоваться объектом дальше,
ему нужно будет прежде дополнительно зареференсить его, в итоге объект будет
жить столько, сколько нужно клиенту, до вызова release, освобождающего
последнюю ссылку.

4) Потенциальные циклические зависимости предугадывать и устранять еще на
стадии проектирования. Не должно быть возможности для классов А и Б взаимно
референсить друг друга.

5) Там, где пункт 4 невозможен, использовать strong reference / weak reference.

6) Все, что можно, позаворачивать в RAII-обертки, хелперы и абстрактные классы,
дать клиентам возможность настройки под свои нужды.

Не по теме:


Возможно, я несколько увлекся...

 
Текущее время: 04:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru