Форум программистов, компьютерный форум CyberForum.ru

Динамическое выделение памяти - C++

Восстановить пароль Регистрация
 
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
21.09.2013, 14:43     Динамическое выделение памяти #1
Вот у меня есть 2 примера:
C++
1
2
char* str = "Немыслимый текст";
char* s = new char [strlen(str)+1];
Тут указатель s будет указывать на блок в памяти, который по размеру равен строке, на которую указывает указатель str и +1 символ для нулевого символа.

C++
1
2
char* str = new char;
std::cin>>str;
А вот под что выделяется память так? Хоть такое и работает но я не могу понять на какой блок памяти будет указывать указатель str с самого начала и почему он способен вместить то, что в него запишут после инициализации?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2013, 14:43     Динамическое выделение памяти
Посмотрите здесь:

C++ динамическое выделение памяти
C++ Динамическое выделение памяти
Динамическое выделение памяти C++
C++ динамическое выделение памяти
C++ Динамическое выделение памяти
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
21.09.2013, 15:09     Динамическое выделение памяти #2
Вообще подозрительный код. std::cin ничего не известно о размере памяти, на которую ссылается указатель str, значит, по идее произойдет переполнение буффера. Но пробовал запускать в отладчике и он молчал...
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
21.09.2013, 15:24  [ТС]     Динамическое выделение памяти #3
А если бы вы определяли строку через указатель, то как бы вводили её из клавиатуры?
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
21.09.2013, 15:29     Динамическое выделение памяти #4
Лично я бы вот так. cin.getline(str, STR_SIZE)
Где STR_SIZE - размер буфера str. В примере выше он равен единичке
Yandex
Объявления
21.09.2013, 15:29     Динамическое выделение памяти
Ответ Создать тему
Опции темы

Текущее время: 04:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru