Conversation
cpp/cpp_chapter_0154/text.md
Outdated
| Перед доступом к объекту указатель `void *` приводится к нужному типу. | ||
|
|
||
| Если `malloc()` не удается выделить память, функция возвращает сишный `NULL`, то есть `nullptr` в C++. |
There was a problem hiding this comment.
возвращает сишный
NULL, то естьnullptr
это одно и то же, не надо пугать пользователями разными нулами :)
возвращает NULL / возвращает nullptr
или
возвращает NULL (он же nullptr)
cpp/cpp_chapter_0154/text.md
Outdated
|
|
||
| Соответственно, второй вариант использования `malloc()` и `free()` заключается в отказе от сишного хедера `stdlib.h` в пользу хедера C++ `cstdlib` или модуля `std`. Перепишем наш пример, чтобы вызвать функции из пространства имен `std`: |
There was a problem hiding this comment.
Это подталкивало знакомившихся с C++ сишников применять новые языковые возможности.
Не подталкивает, обычно используют Си-шные варианты функций. Предлагаю это предложение убрать, сократить текст и объединить абзацы этот и следующий. Например:
Пространства имен, появившиеся еще на заре C++, позволяют предотвращать конфликты имен и удобно группировать код. Функции библиотеки рантайма Си были добавлены в пространство имен std. Для использования функций управления памятью необходимо подключить заголовок cstdlib или модуль std. Перепишем наш пример:
There was a problem hiding this comment.
Переписала. Взяла твой вариант.
cpp/cpp_chapter_0154/text.md
Outdated
| ``` | ||
|
|
||
| Разницы между `malloc()` / `free()` и `std::malloc()` / `std::free()` нет. Просто второй вариант чуть менее сишный. Но оба варианта плохи. Их не рекомендуется использовать в современном C++ без явной необходимости. Вот основные причины: |
There was a problem hiding this comment.
Просто второй вариант чуть менее сишный.
Просто второй вариант более плюсовый / идиоматичный.
cpp/cpp_chapter_0154/text.md
Outdated
| - `malloc()` возвращает указатель `void *`, и вам нужно самостоятельно приводить его к указателю на нужный тип. |
There was a problem hiding this comment.
Самое важное, что не происходит инициализация. Хотелось бы это подчеркнуть:
- для простых типов требуется инициализация,
- для других — ручной вызов конструктора.
А преобразование указателя это менее важное и про это уже сказано.
There was a problem hiding this comment.
Добавила эти подпункты.
3326bff to
f83be66
Compare
ПОКА НЕ ГОТОВ