Получи случайную криптовалюту за регистрацию!

cpp

Логотип телеграм канала @cplusplustudy — cpp C
Логотип телеграм канала @cplusplustudy — cpp
Адрес канала: @cplusplustudy
Категории: Образование
Язык: Русский
Количество подписчиков: 16
Описание канала:

Канал посвященный моим попыткам освоить C и немного компиляторы. Буду сюда кидать интересные для меня вещи.

Рейтинги и Отзывы

4.67

3 отзыва

Оценить канал cplusplustudy и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

2

4 звезд

1

3 звезд

0

2 звезд

0

1 звезд

0


Последние сообщения

2022-10-16 23:09:30 https://telegra.ph/Predkompilirovannye-zagolovki-10-16
16 views20:09
Открыть/Комментировать
2022-09-10 23:32:59 https://telegra.ph/C-Kompilyaciya-Preprocessor-09-10
45 views20:32
Открыть/Комментировать
2022-09-04 22:18:13 https://telegra.ph/C-compilation-part-1-09-04
278 views19:18
Открыть/Комментировать
2022-09-03 21:41:05 Еще одна проблема с переходом на низкоуровневые языки — операции с указателями (pointer).

Про это знают, наверно, все программисты, но иногда случаются ситуации, в которых с первого раза и не предположить подводных камней.

Рассмотрим следующий код:
vector v;
v.push_back(1);
cout << v[0] << " ";
int *p = &*(--v.end());

(*p) = 2;
cout << v[0] << " ";
(*p) = 3;
cout << v[0] << " ";

Данный код выведет на экран значения:
1 2 3

Казалось бы все как мы и предполагали.
Проблема данного кода в том, что вектор совершенно не гарантирует что данные будут все время лежать в одной и той же области памяти. В случае изменения размера — стандартная библиотека может переложить элементы в новую область памяти.

Давайте немного поменяем исходный код:
vector v;

v.reserve(1);

v.push_back(1);
cout << v[0] << " ";
int *p = &*(--v.end());

(*p) = 2;
cout << v[0] << " ";

v.reserve(3);

(*p) = 3;
cout << v[0] << " ";

В лучшем случае эта вариация выведет на экран: 1 2 2, так как мы запишем последнее изменение в область памяти уже не имеющей отношения к вектору.

В худшем же случае данный код просто упадет в попытке произвести запись в ненадлежащий сегмент.
77 viewsedited  18:41
Открыть/Комментировать
2022-01-24 00:20:49 https://en.cppreference.com/w/cpp/filesystem/exists

Когда только начинаешь учить С++ после высокоуровневых языка самое забавное — насколько иногда простые вещи в этом языке сложно исполнять.
К примеру функция проверки существования файла на диске в стандартную библиотеку была добавлена только в стандарте 2017го года. До этого приходилось извращаться со всякими:

ifstream f(name.c_str());
return f.good();
65 viewsedited  21:20
Открыть/Комментировать
2022-01-24 00:18:24 Channel photo updated
21:18
Открыть/Комментировать