Pull to refresh
43
0
Блохин Алексей @Renzo

Пользователь

Send message

Как обеспечить надлежащее пересечение границ динамической библиотеки, используя пользовательские средства удаления смарт-указателей

Reading time 4 min
Views 9.7K
Многие эксперты С++ агитируют использовать интеллектуальные указатели, утверждая, что из современного С++, явное использование new должно вообще исчезнуть (ну, по крайней мере, когда в С++14 пофиксят отсутствие std::make_unique). Все динамические выделения памяти должны быть инкапсулированы или в стандартную библиотеку, или контейнеры типа std::vector, или интеллектуальные указатели.

Смарт-указатели стандартной библиотеки могут быть настроены так, чтобы они сами занимались освобождением занимаемой ими памяти. Эта возможность и заложена в основу ответа на вопрос, поставленного в заголовке статьи.

Объект является пересекающим границу динамической библиотеки, если он инициализируется в одном блоке, а используется в другом. Это происходит, когда, например, в dll инициализируется объект и возвращается указатель на него.

Предположим, одна библиотека (или исполнимый модуль) связывается с другой библиотекой, используя фабрику для динамической инициализации объекта и получения указателя на него. Блок, который использует этот указатель, может удалить указатель для освобождения области памяти, на которую он указывает. Если библиотека, которая выделяет память и блок, работающий с указателем, используют различные версии динамического выделения памяти ОС (CRT в Windows), то возникнет ошибка. Пример этой проблемы (в случае с Windows):
Продолжение...
Total votes 14: ↑11 and ↓3 +8
Comments 11

Обзор новых возможностей в Qt Quick

Reading time 4 min
Views 20K
С выходом Qt 5.1 было добавлено много нового функционала и в Qt Quick, краткий обзор которого будет представлен в этой статье. Большинство функций, которые раньше были частью Desktop Components Project, теперь официально являются частью Qt Quick. Наиболее популярной является QtQuick.Controls, но так же был добавлен ряд смежных функций, о которых я и хотел бы рассказать в этой статье…
Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Comments 1

Qt Charts 1.3.0 released

Reading time 1 min
Views 14K
Вышла новая версия Qt Chart, предоставляющая новые чарты (Polar и Boxplot) и некоторые улучшения API. Пакет, как обычно, доступен в Customer portal.

Polar chart позволяет представлять данные в круговом графике. Polar chart поддерживает line, spline, area и scatter series и все поддерживаемые ими типы осей.

Кликабельно
Читать дальше →
Total votes 18: ↑15 and ↓3 +12
Comments 9

Десять возможностей C++11, которые должен использовать каждый C++ разработчик

Reading time 12 min
Views 531K
В данной статье рассматривается ряд возможностей С++11, которые все разработчики должны знать и использовать. Существует много новых дополнений к языку и стандартной библиотеке, эта статья лишь поверхностно охватывает часть из них. Однако, я полагаю, что некоторые из этих новых функций должны стать обыденными для всех разработчиков С++. Подобных статей наверное существует много, в этой я предприму попытку составить список возможностей, которые должны войти в повседневное использование.

Сегодня в программе:
  • auto
  • nullptr
  • range-based циклы
  • override и final
  • строго-типизированный enum
  • интеллектуальные указатели
  • лямбды
  • non-member begin() и end()
  • static_assert и классы свойств
  • семантика перемещения
Читать дальше →
Total votes 133: ↑125 and ↓8 +117
Comments 115

Полиморфизм без виртуальных функций

Reading time 15 min
Views 38K
В этой статье представлен паттерн, который может быть использован для обеспечения динамического связывания без использования виртуальных функций для вызова перегруженных методов для объектов неоднородного контейнера при его обходе.
Читать дальше →
Total votes 21: ↑20 and ↓1 +19
Comments 2

Создание QR-кодов на C/C++

Reading time 4 min
Views 36K
image
Это простой пример использования библиотеки libqrencode от FUKUCHI Kentaro для генерации bmp-файла с QR-кодом для какого-то текста. В интернете полно ссылок на эту библиотеку, но ни одного примера ее использования. libqrencode поддерживает QR Code model 2, описанный в JIS (Japanese Industrial Standards) X0510:2004 или ISO/IEC 18004. В настоящее время не поддерживаются режимы ECI и FNC1 QR Code model 1.
Читать дальше →
Total votes 43: ↑31 and ↓12 +19
Comments 14

Потоки, блокировки и условные переменные в C++11 [Часть 2]

Reading time 7 min
Views 159K
Для более полного понимания этой статьи, рекомендуется прочитать ее первую часть, где основное внимание было уделено потокам и блокировкам, в ней объяснено много моментов (терминов, функций и т.д.), которые без пояснения будут использованы здесь.
В данной статье будут рассмотрены условные переменные…
Читать дальше →
Total votes 54: ↑54 and ↓0 +54
Comments 8

Потоки, блокировки и условные переменные в C++11 [Часть 1]

Reading time 8 min
Views 433K
В первой части этой статьи основное внимание будет уделено потокам и блокировкам в С++11, условные переменные во всей своей красе будут подробно рассмотрены во второй части
Читать дальше →
Total votes 67: ↑67 and ↓0 +67
Comments 14

Экранирование (или что нужно знать для работы с текстом в тексте)

Reading time 10 min
Views 222K
SQL инъекции, подделка межсайтовых запросов, поврежденный XML… Страшные, страшные вещи, от которых мы все бы хотели защититься, да вот только знать бы почему это все происходит. Эта статья объясняет фундаментальное понятие, стоящее за всем этим: строки и обработка строк внутри строк.
Читать дальше →
Total votes 76: ↑51 and ↓25 +26
Comments 115

Использование CMake с Qt 5

Reading time 5 min
Views 77K
image

CMake — это система сборки ПО (точнее генерации файлов управления сборкой), широко используемая с Qt. При создании больших или сложных проектов, выбор CMake будет более предпочтительным, нежели использование qmake. KDE когда-то был переломным моментом в популярности CMake как таковой, после чего свою «лепту» внес Qt 4. В Qt 5 поддержка CMake была значительно улучшена.
Читать дальше →
Total votes 21: ↑17 and ↓4 +13
Comments 6

Qt Creator 2.8.0 beta released

Reading time 2 min
Views 16K
30 мая вышел Qt Creator 2.8 beta, в котором реализовано много новых функций и исправлено большое количество ошибок.

Все нововведения и исправления в одном посте уместить будет весьма трудновато, поэтому попытаюсь выделить только несколько основных моментов.
Что нового в Qt Creator?
Total votes 31: ↑31 and ↓0 +31
Comments 10

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity