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

Надзиратель томагавков или что за велосипед я изобрел? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Получение из файла формата wav массива значений http://www.cyberforum.ru/cpp/thread1108824.html
Столкнулся со следующей задачей, требуется получить из wav файла массив значений. Сам владею Си на примитивном уровне, по этой причине решить данную задачу самостоятельно не могу, поиск в гугле...
C++ Run exe from memory (x64) Есть необходимость запускать exe из памяти, а не с диска. Может кто сталкивался с данным проектом? Сам находил много проектов, но они были Win32 и не работали под сборкой x64. А мне нужен именно... http://www.cyberforum.ru/cpp/thread1107701.html
Я по по воду хакерства.В последнее время это меня очень сильно заинтересовало может посоветуете чего нибудь(книги,программы и тд ) буду очень благодар C++
Прошу прощения , но я не нашел подходящей темы и решил написать сюда т.к. единственное что я знаю это С++ и то плоховато)) вы наверное подумаете " еще один про хакер"
Как с помощью Bitblt нарисовать линию из '*'? C++
как с помощью Bitblt нарисовать линию из таких символов *?
C++ Как должен выглядеть POST и GET запросы к нужному ресурсу? http://www.cyberforum.ru/cpp/thread1107077.html
Всем привет! Пишу приложение, используя библиотеку cURL и застрял на том, что не могу определить как должен выглядеть POST и GET запрос к нужному ресурсу? Как это определять? P.S. Правильно ли...
C++ Необходимо дописать программу Здравствуйте. Нужна помощь в написании программы, точнее её частичном изменении. Вот исходники программы. На картинке изобразил, что хотелось бы получить в итоге: подробнее

Показать сообщение отдельно
DrOffset
7152 / 4293 / 968
Регистрация: 30.01.2014
Сообщений: 7,093
03.03.2014, 21:34
Цитата Сообщение от SatanaXIII Посмотреть сообщение
1) Что это за хрень? Х) Что-то среднее между сборщиком мусора и умным указателем?
Да, похоже и на то и на другое. А еще - это синглтон и наполовину пул объектов.
Цитата Сообщение от SatanaXIII Посмотреть сообщение
2) Как вообще сама идея использовать подобным образом автоматический вызов деструктора для объекта, созданного на стеке, чтобы управлять созданными динамически?
Этой идее "сто лет" и реализуется она с помощью RAII. Это либо пул объектов, либо контейнер умных указателей.

Цитата Сообщение от SatanaXIII Посмотреть сообщение
3) Куда это можно применить?
В таком виде - никуда. Главное достоинство в виде статического вектора регистрируемых элементов, одновременно является главным недостатком (т.к. сложно контролировать консистентность такого вектора (особенно в условиях многопоточности)).
Чтобы его попробовать реально применять нужно объектам сделать счетчик ссылок, иначе удаление извне сделает ранее полученные ссылки невалидными. И запретить использование голых указателей, по той же причине. Так же присутствует определенное ограничение на многопоточное применение (возможно помог бы thread-local, но это уже зависит от задачи).

Вообще такое совмещение функциональности видится мне антипаттерном, т.к. одна и та же сущность имеет кардинально разные условия применимости.
Цитата Сообщение от SatanaXIII Посмотреть сообщение
4) Можно ли как-то узнать где именно создан конкретный объект - на стеке или в куче?
Переносимого способа нет, как нет и гарантированно рабочего в большинстве ситуаций непереносимого.

Можно попробовать сделать одну из двух вещей:
1) Запретить создание объектов на стеке (конструкторы в приват, делаем статическую функцию Create, которая создает объект требуемым способом).
2) Запретить создание объектов в куче, поместив оператор new в приват. Однако этот запрет обходится при желании.
В любом случае это потребует разнесения в разные классы (объекты одного живут только на стеке, другого - только в куче).

Ну и вот в коде углядел вот это:
C++
1
2
3
4
5
6
7
8
9
10
11
//delete tom3;                                            //// Удалили какие-то
delete tom2;                                                //
//delete tom1;                                            ////
 
overseer.ShowItems(); // Можно поглядеть, что осталось
 
//tom2->ShowItems(); // А вот здесь косяк - после удаления экземпляра,
                     //  закрытый метод для него становится доступным
                     // Это связано со свойством isOverseer
                     // при удалении экземпляра оно становится равным true
                     // Если его инвертировать, то все в порядке
Но ведь обращение по указателю, к которому был применен delete - это UB, о каком доступе вообще может идти речь?
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru