Ioann_
После malloc надо бы проверять возвращаемое им значение, мало ли памяти не хватило или еще чего :]
Ioann_
Endp startp - можно и нужно делать константными
ГуНиСе️
ГуНиСе️
Мотивация: в случае нехватки памяти программа всё равно завершится. Так как какая разница из-за чего это произойдёт
Ioann_
Ну, хех. Не знаю, мне затруднительно ответить стоит или нет.
ГуНиСе️
из-за разыменования NULL или чуть более красиво
Ioann_
Ioann_
Пойдет в null и там уже аборт
Ioann_
Или что там бросает
Ioann_
А так можно обработать
ГуНиСе️
ну разные бывают стратегии обработки ошибок...
Ioann_
И продолжить использование
ГуНиСе️
кое-кто вон сразу завершает свою программу, если что-то пошло не так
Ioann_
Более того туда еще и запись делается :}
Ioann_
Ну я так поправил человека. Чтобы просто понимал, что там есть ошибки и неточности :) А уж что с ними делать ...
ГуНиСе️
Ioann_
Ну так можно сказать про любую ошибку ...
Ioann_
Я не рассматриваю эту ошибку как ошибку и пусть компилятор меня остановит, а коли нет - то падите от моего меча !
ГуНиСе️
тогда возможны уязвимости
Ioann_
Ладно всем хорошей ночи, а я продолжать работать !
cyberzx 🇷🇺
Не видел ни разу стратегий обработки нулл в маллок, при которой программа не завершается. Буду благодарен за пример
Evgenii
реально а че делать если память закончилась, кроме как сеппуку?)
Oleg
Arseny
ГуНиСе️
https://scvalex.net/posts/6/
ГуНиСе️
Malloc never fails. Правда это настраивается параметром vm.overcommit_memory
ГуНиСе️
http://helpers.com.ua/linux/overcommit-memory/
Anatoly
https://www.youtube.com/watch?v=6nsyX37nsRs&feature=youtu.be
#metaclasses #sutter
Александр
видели, читали..
vladislav
еее, в стандарт плюсов что-то дельное предлагают
https://herbsutter.com/2017/07/26/metaclasses-thoughts-on-generative-c/
Алдар
у петона подсмотрели?
vladislav
а, сорян, тут уже вкинули)
Крылатый
Опять он со своей норкоманией)
vladislav
Крылатый
Но $class больше на PHP похоже.
Александр
я джва года жду такого
vladislav
то чувство, когда в плюсы подъезжают технологии из начала 70-х
Крылатый
Вопрос! Что это означает? auto x[] = { 0, 1 };
Крылатый
Согласно современному стандарту, да.
Александр
Баян
Stanislav
Крылатый
Всего один день, а уже боян?(
Александр
Такова жизнь :(
Александр
Но тут не обсуждалось ещё
Nik
Stanislav
Крылатый
Mikhail
error: 'x' declared as array of 'auto'
Mikhail
c флагом std=c++11
Крылатый
Крылатый
Stanislav
Evgenii
Mikhail
судя по логам низя массив объявлять как auto
Mikhail
auto x = {0, 1}; std::cout « typeid(x).name() « std::endl;
вообще выдает St16initializer_listIiE
компилил clang'ом
Mikhail
что в очередной раз показывает что не стоит юзать auto где он не нужен
Александр
Dr. Friedrich
Для auto без массива ещё можно было бы догадаться.
Ioann_
Кстати, о вчерашнем коде.
Ioann_
Ну, тем у кого есть время и желание:
Смотрите, у вас есть строка p, она содержит n символов. При том в некоторой позиции содержит стророку вида "abc...."
Anatoly
Конечно, не решение, но массив auto:
template<typename T, size_t N>
using array = T[N];
int main()
{
auto&& a = array<int, 2>{1, 2};
std::cout << typeid(a).name();
}
Mikhail
лично я стараюсь использовать auto в случае если явно известен тип переменной. чтобы просто сэкономить местно.
всякие конструкции типа auto x = {0, 1} или short a = 2, b = 3; auto с = a + b не совсем однозначны.. компилятором не гарантируется что они будут приведены к типу int вообще, на всех аппаратных платформах.
Ioann_
Ioann_
Т.е что бы по обращению к out, можно было получить то что в кавычечках строки p.
Anatoly
судя по сигнатуре, ты в out должен передать уже выделенный под результат буфер
Anatoly
поэтому только копированием в out того, что находится в кавычках
Anatoly
если бы возврат из функцию предполагал пару указателей, то ничего бы выделять и копировать не пришлось
Ioann_
А почему именно возврат это определяет :?
Anatoly
передать в параметр char* в теле функции ты ничего не можешь, поскольку здесь указатель передан по значению, поэтому только записать можешь данные по этому указателю, а так я не понял твой вопрос.
Ioann_
Ну я полагал вот такое решение: while(++p != '"'); out = p; while(++p != '"'); *--p = 0;
Ioann_
т.е копирования не нужно.
Anatoly
out невозможно изменить так, чтобы это стало доступно вызывающей стороне
Ioann_
Да, надо ссылку добавить - мой косяк
Anatoly
в этом случае сигнатура должна быть другой:
void foo(char *in, char*& out);