Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/120: Рейтинг темы: голосов - 120, средняя оценка - 4.52
1 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 8

Разница между new char[] и new char[]()

05.02.2016, 17:10. Показов 25575. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

Подскажите пожалуйста разницу, между следующим кодом:
C++
1
char* ch = new char[100];
и
C++
1
char* ch = new char[100]();
При использовании первого варианта, если туда ничего не записать, там хранится мусор. Со вторым вариантом проблем нету.

Из моего теста и догадок:
первый вариант использует malloc(), а второй еще и чистит (memset()). Так ли это?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2016, 17:10
Ответы с готовыми решениями:

В чем разница между char* и char **
в чем разница между char* и char ** ??

Разница между char и signed char
Не понимаю в чем разница между char и signed char, ведь char по умолчанию знаковый. Не комплилируется следующий фрагмент кода: void...

В чем разница между char* и char[]?
Доброго времени суток, наткнулся на одну загвоздку есть такой кусок кода int _tmain(int argc, _TCHAR* argv) { char *a =...

31
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
05.02.2016, 17:13
codeque, Во-втором варианте массив заполняется значениями по умолчанию.
2
1 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 8
05.02.2016, 17:16  [ТС]
По умолчанию это каким значением? нулями, т.е. чистит?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
05.02.2016, 17:18
C++
1
 int a = int();
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
05.02.2016, 17:19
codeque, Нулевым элементом ASCII-таблицы, я думаю. Ну то есть пустыми символами.
1
1 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 8
05.02.2016, 17:23  [ТС]
rikimaru2013, это не в тему...

makfak, получается, что очищает память..) Если пихаю туда указатели на символы, то при использовании второго варианта не нужно писать ноль в последний байт. Верно? Так как оно уже почистило.

Добавлено через 1 минуту
Еще что такое тогда:
C++
1
char* ch = new char(100);
?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
05.02.2016, 17:28
codeque, ну да - вам же виднее)
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
05.02.2016, 17:29
Цитата Сообщение от codeque Посмотреть сообщение
это не в тему...
А это?
C++
1
char b = char();
0
1 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 8
05.02.2016, 17:31  [ТС]
nd2, тоже не в тему. К чему это вообще? Разницы 0 между моим примером и этим, только проверить будет тяжелее

Добавлено через 1 минуту
nd2, Обратный вопрос тогда к вам:
разница между
C++
1
char b = char;
и
C++
1
char b = char();
?
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
05.02.2016, 17:33
Лучший ответ Сообщение было отмечено codeque как решение

Решение

Цитата Сообщение от codeque Посмотреть сообщение
получается, что очищает память..
Нет, массив остаётся, просто он не заполнен мусором, то есть его можно использовать как и раньше, просто он заполнен нулевыми символами.
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
05.02.2016, 17:33
codeque, есть такое понятие как конструктор. Обычно это рассматривается в контексте ООП.
1
1 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 8
05.02.2016, 17:34  [ТС]
makfak, спасибо! Я это и имел ввиду, не так выразился. Получается, что первый вариант с мусором, а второй с нулевыми символами. Поправьте если ошибаюсь
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
05.02.2016, 17:36
Цитата Сообщение от codeque Посмотреть сообщение
К чему это вообще?
К тому, что если так:
C++
1
char* ch = new char[100]();
, то для каждого элемента массива данных будет вызван конструктор по умолчанию.
Тут тоже показан вызов конструктора по умолчанию для char:
Цитата Сообщение от nd2 Посмотреть сообщение
char b = char();
Можно увидеть, что после этого, значение b, будет равно 0.
0
1 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 8
05.02.2016, 17:36  [ТС]
Bespridelschic, конструктор вызывается при использовании оператора new, даже без (). А деструктор при delete, вроде как в этом отличие между Сишных malloc и free
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
05.02.2016, 17:36
nd2, мы старались, брат. Но увы)
0
 Аватар для Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
05.02.2016, 17:37
codeque, есть такое понятие как конструктор. Обычно это рассматривается в контексте ООП.
У встроенного типа char (int8_t, byte ...) нет и и не может быть конструктора.
У него может быть только инициализация.
1
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
05.02.2016, 17:39
codeque, Правильно.
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
05.02.2016, 17:39
codeque, конструктор вызывается при создании объекта вообще, и присваивает ему определенные значения. Это если не углубляться в конструктор с точки зрения компилятора.
1
1 / 0 / 0
Регистрация: 05.02.2016
Сообщений: 8
05.02.2016, 17:39  [ТС]
Olej, вот, абсолютно согласен!
0
 Аватар для SergioO
261 / 209 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
05.02.2016, 17:40
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
int a = int()
где эта функция реализована, как и другие?
можно ее код в студию?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2016, 17:40
Помогаю со студенческими работами здесь

Разница между char и int
Известно что для чар выделяется 1 байт (8 бит) для инт 4 байта (32 бита). Так почему нельзя в чар присвоить 10 и больше до 255 в виде...

Char unsigned char signed char длинна Кааак
Здравствуйте. char l = {0,0}; l = 0xff; Почему, меня, компилятор не посылает куда подальше. Нет он конечно...

char и char* разница
Привет всем:) Изучаю С++ и вот застрял на задании где надо удалить символ из входного потока. В гугле нашел вот такое код( смотрите ниже...

Ошибка: "char *concat(char *,.)": невозможно преобразовать аргумент 1 из "const char [4]" в "char *"
делал задание, но на строке 36 строке пишет, что "char *concat(char *,...)": невозможно преобразовать аргумент 1 из "const char "...

(char)xx и '\xx' - в чём разница?
День добрый. Просто любопытно, почему cout << (char)число; и cout << '\число'; часто дают разный результат?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru