All streams
Search
Write a publication
Pull to refresh
52
0

User

Send message
Скорее всего, да. Всё зависит от того, в какой степени Вы пользуетесь ЯП.

У меня (C++) используется класс SecureString, который шаблонно наследуется от ряда стратегий, например, QuotesStrategy и HtmlStrategy. Каждая стратегия может быть Throw, Skip, Escape, Ignore. В этих случаях при встрече запрещенного символа будет соответсвенно либо брошено исключение, либо символ не попадёт в результирующую строку, либо будет заэскейплен, либо будет пропущен в результат. Вместе с Qt и implicit sharing, всё проверяется и приводится к нужным типам почти мгновенно, так как нет лишних копирований, а только один проход при присваивании/другом изменении.

При этом в HTML-вывод пользователю не может попасть строка, у которой HtmlStrategy — это Ignore, что гарантирует система приведения типов во время компиляции.
Это решается очень просто — достаточно привязывать не запреты, а разрешения.
Да, это так. Типичным способом решения данной проблемы, когда operator delete не пустой, является выделение дополнительного кусочка памяти перед основным вовзращаемым блоком и запись туда служебной информации (вроде адреса аллокатора). Так, например, работают new[] и delete[] — new[] пишет перед выделяемым блоком количество элеметов, а delete[] это считывает и вызывает деструкторы нужное количество раз.
К сожалению, нет. nothrow delete вызывается только в случае, если при вызове nothrow new конструктор выкинул исключение, и за ним нужно почистить память. При вызове delete будет вызвана обычная версия, что приведёт к попытке удаления из пула объекта, заведённого в свободной памяти.
Нет. Существует три версии new со следующими сигнатурами:
void* operator new(size_t) throw(std::bad_alloc) — обычный
void* operator new(size_t, void*) throw() — размещающий
void* operator new(size_t, const std::nothrow_t&) throw() — оператор, который вместо выкидывания std::bad_alloc при проблемах вернёт нулевой указатель.
Используется последний примерно так:
X *p = new(std::nothrow) X;
if (!p) exit(1);

Хорошим тоном считается при перегрузке операторов выделения памяти перегружать и последний вариант.
Забыли nothrow new.
Это точно не шутка? :)
Своп двух переменных делает UB, так как перемення изменяется дважды в одной sequence point. Скорее всего, не будет работать при определенном сочетании компилятор/флаги.
Добрый день!

Пожалуйста, расскажите про новый продукт PCS.
Чем его ядро отличается от ядра PVC / OpenVZ, кроме встроенного PSBM? Если отличия существенные, планируется ли вливать их в PVC / OpenVZ / апстрим?
Это не баг, а документированное поведение — функция возвращает int, который может быть либо меньше нуля, либо больше нуля, либо равен нулю, и почти всегда по размеру больше, чем char. Ошибка именно в MySQL.
Они просто поставили cygwin
А Вы уверены, что shared-хостер отправляет почту Вашего сайта именно с Вашего IP? Возможно, косяк конфигурации где-то у них.
У меня был G900, проработал нормально ровно год (правда, вроде-бы, нужно было поставить какой-то хак, чтобы цифры на русской раскладке работали). Потом просто перестал включаться.
Ещё один вариант — слепить маленькую длинную арифметику с базой 2^16 и 3 разрядами. Тогда умножение и бинарный сдвиг легко реализуются в 32битных числах.
Это о каком из указанных в топике продуктов?
А на какую конференцию ездили троллить, если не секрет?
N-ое простое число имеет порядок примерно n * ln n, значит его длина — ln n + ln ln n или примерно ln n (если верить статье и считать, что ln ln n это очень мало). Получается, алгоритм работает за O(ln n * n^(1/2)). А это тоже совсем не экспоненциально, и даже быстрее, чем линейно.
Спасибо за статью.
Вроде бы, O(n^(1/2)) — это не экспоненциальный рост, а экспоненциальный — это O(a^n).

Information

Rating
Does not participate
Registered
Activity