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

Расширение массива с затиранием данных

25.03.2017, 20:55. Показов 649. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.

Пример:
C++
1
2
3
4
5
6
7
8
int main() {
 
   DWORD size = 0; // нулевой размер
   TCHAR buf[size]; // буфер нулевого размера
   GetComputerName(buf, &size); // тут функция завершится неудачей и в size запишет требуемый размер буфера
 
   return 0;
}
Подскажите, правильно ли я понимаю - после завершения GetComputerName() увеличится size, и автоматически расширится buf. Тем самым buf затрёт данные которые стояли рядом с ним и на их место запишет свои. Правильно?

В отладчике как-то не получилось это выяснить.
Заранее благодарю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2017, 20:55
Ответы с готовыми решениями:

Проблема с затиранием символов
Доброго времени суток! В моей программе есть проблема с затиранием символов. Например, если я...

Хранение данных (расширение GH)
Здравствуйте, пишу расширение уже все реализовано, но нужно сделать запоминание данных которые...

Расширение массива
Здравствуйте. int massiv= new int; Как расширить массив в дальнейшем?

Расширение массива
Имеется массив A, размером m x n. необходимо создать массив B, размерностью m x (n+1000). Причем B...

3
Заблокирован
25.03.2017, 21:51 2
Цитата Сообщение от codesurfer Посмотреть сообщение
и автоматически расширится buf
Нет, размер твоего буфера меняться не будет.
Цитата Сообщение от codesurfer Посмотреть сообщение
Правильно?
Нет. В документации же все написано про оба параметра:
lpBuffer [out]
A pointer to a buffer that receives the computer name or the cluster virtual server name. The buffer size should be large enough to contain MAX_COMPUTERNAME_LENGTH + 1 characters.
lpnSize [in, out]
On input, specifies the size of the buffer, in TCHARs. On output, the number of TCHARs copied to the destination buffer, not including the terminating null character.
If the buffer is too small, the function fails and GetLastError returns ERROR_BUFFER_OVERFLOW. The lpnSize parameter specifies the size of the buffer required, including the terminating null character.
0
0 / 0 / 0
Регистрация: 09.02.2017
Сообщений: 69
25.03.2017, 23:38  [ТС] 3
Цитата Сообщение от nimazzzy Посмотреть сообщение
Нет, размер твоего буфера меняться не будет.
Т.е. в строке TCHAR buf[size] в размер буфера пойдёт копия значения size, а не оригинал, и следовательно, потом изменение значения size не повлияют на размер буфера, правильно?
0
0 / 0 / 0
Регистрация: 09.02.2017
Сообщений: 69
27.03.2017, 16:20  [ТС] 4
Цитата Сообщение от codesurfer Посмотреть сообщение
Т.е. в строке TCHAR buf[size] в размер буфера пойдёт копия значения size, а не оригинал, и следовательно, потом изменение значения size не повлияют на размер буфера, правильно?
Подтвердите кто-нибудь, и закроем вопрос.
0
27.03.2017, 16:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2017, 16:20
Помогаю со студенческими работами здесь

Расширение массива
Доброй ночи , уважаемые форумчане. Пожалуйста строго не кусайте, я пришёл к вам с вот таким...

Расширение массива
Подскажите пожалуйста что может быть не верным в алгоритме void** InitArray (int size, int cnt)...

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

Расширение динамического массива
Ниже код, который безошибочно компилируется. Но при выполнении программа рушится. При расширении...

Расширение динамического массива
Доброго времени суток. Прошу помощи. Моя проблема заключается в том, что не могу понять как...

Расширение динамического массива
В С для работы с динамической памятью используются операторы: malloc,calloc для выделения...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru