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

При вызове конструктора ошибка: L "Buffer is too small" & & 0

23.03.2014, 18:09. Показов 8226. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет.
При вызове конструктора вылетает эта ошибка.
При вызове конструктора ошибка: L "Buffer is too small" & & 0


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Student(char *n, char *s, char *p, int y, char *g)
    {
        name = new char[strlen(n)+1];
        surname = new char[strlen(s) + 1];
        patr = new char[strlen(p) + 1];
        group = new char[strlen(g) + 1];
 
        strcpy_s(name, strlen(n), n);
        strcpy_s(surname, strlen(s), s);
        strcpy_s(patr, strlen(p), p);
        strcpy_s(group, strlen(g), g);
 
        year = y;
    }
Как это исправить?
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2014, 18:09
Ответы с готовыми решениями:

Strcpy_s выдает ошибку L Buffer is too small & & 0
strcpy_s выдает ошибку L Buffer is too small & & 0 22 строка #include <iostream> #include...

Ошибка : " L Buffer is too small & & 0"
Здравствуйте. У меня возникла странная проблема: в недалеком прошлом рабочая программа начала...

Expression: (L"Buffer is too small" && 0)
Где ошибка и как её исправить? #include <iostream> #include <string> using namespace std;...

query='SELECT * FROM resume WHERE ' & ''' & RecSet('place')& ''' & '=' & '''& s_loc &''' & - что не так?
упростил для краткости запрос. в чем ошибка? RecSet - это коннекшн. query='SELECT * FROM resume...

error '80020009' Îøèáêà. /lalala/profile.asp, line 28
При простейшем и сто раз работавшем скрипте, вылетает ошибка! след. содержания error...

11
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 18:12 2
Цитата Сообщение от NinjaNoob Посмотреть сообщение
При вызове конструктора вылетает эта ошибка.
Вызов покажите.
0
1 / 1 / 0
Регистрация: 21.12.2012
Сообщений: 19
23.03.2014, 18:16  [ТС] 3
C++
1
Student B("Иванов", "Иван", "Иванович", 1993, "АНТ21");
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 18:39 4
C++
1
strcpy_s(name, strlen(n) + 1, n);
1
1 / 1 / 0
Регистрация: 21.12.2012
Сообщений: 19
23.03.2014, 19:10  [ТС] 5
Спасибо, помогло!
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 19:12 6
Цитата Сообщение от NinjaNoob Посмотреть сообщение
Спасибо, помогло!
Зачем вам эти заморочки microsoft? Есть же стандартные функции.
0
1 / 1 / 0
Регистрация: 21.12.2012
Сообщений: 19
23.03.2014, 19:23  [ТС] 7
Имеете ввиду <string> ?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 19:29 8
Цитата Сообщение от NinjaNoob Посмотреть сообщение
Имеете ввиду <string> ?
Имею ввиду strcpy_s().

Добавлено через 2 минуты
Стандарт:
http://www.cplusplus.com/refer... ?kw=strcpy
http://www.cplusplus.com/refer... g/strncpy/
0
1 / 1 / 0
Регистрация: 21.12.2012
Сообщений: 19
23.03.2014, 19:31  [ТС] 9
студия не дает использовать обычную strcpy. заставляет использовать strcpy_s, которая уже с тремя параметрами
При вызове конструктора ошибка: L "Buffer is too small" & & 0
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 19:39 10
Цитата Сообщение от NinjaNoob Посмотреть сообщение
студия не дает использовать обычную strcpy
Смотря какая студия (до 10-й включительно - даёт). А если не даёт (паранойя microsoft), то можно сделать, чтобы давала:
https://www.cyberforum.ru/post5488517.html
1
1 / 1 / 0
Регистрация: 12.03.2015
Сообщений: 24
29.06.2016, 07:50 11
При использовании strcpy строка может выйти за пределы выделенной памяти, лучше использовать strncpy.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
29.06.2016, 08:05 12
Цитата Сообщение от alsav22 Посмотреть сообщение
паранойя microsoft
Из стандарта C11:
Traditionally, the C Library has contained many functions that trust the programmer to provide output character arrays big enough to hold the result being produced. Not only do these functions not check that the arrays are big enough, they frequently lack the information needed to perform such checks. While it is possible to write safe, robust, and error-free code using the existing library, the library tends to promote programming styles that lead to mysterious failures if a result is too big for the provided array.

A common programming style is to declare character arrays large enough to handle most practical cases. However, if these arrays are not large enough to handle the resulting strings, data can be written past the end of the array overwriting other data and program structures. The program never gets any indication that a problem exists, and so never has a chance to recover or to fail gracefully.

Worse, this style of programming has compromised the security of computers and networks. Buffer overflows can often be exploited to run arbitrary code with the permissions of the vulnerable (defective) program.

If the programmer writes runtime checks to verify lengths before calling library functions, then those runtime checks frequently duplicate work done inside the library functions, which discover string lengths as a side effect of doing their job.

This annex provides alternative library functions that promote safer, more secure programming. The alternative functions verify that output buffers are large enough for the intended result and return a failure indicator if they are not. Data is never written past the end of an array. All string results are null terminated.

This annex also addresses another problem that complicates writing robust code:
functions that are not reentrant because they return pointers to static objects owned by the function. Such functions can be troublesome since a previously returned result can change if the function is called again, perhaps by another thread.
Также есть описание этих функций (_s).
Конечно, там написано, что реализация оставляет
за собой право решить предоставлять эти функции или нет.
В случае, если данные функции предоставляются, макрос
_ _STDC_WANT_LIB_EXT1_ _ ставится в 1, если нет, то в 0.
3
29.06.2016, 08:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2016, 08:05
Помогаю со студенческими работами здесь

Помогите найти драйвера для pci\ven_8086&DEV_266E&SUBSYS_A002145&REV_05\3&13C0B0C5&0&F2
pci\ven_8086&amp;DEV_266E&amp;SUBSYS_A002145&amp;REV_05\3&amp;13C0B0C5&amp;0&amp;F2 Мультимедиа аудиоконтроллер ...

Нужен драйвера, код PCI\VEN_1039&DEV_7012&SUBSYS_0C98105B&REV_A0\3&B1BFB68&0&17
всем привет !! уменя нет звука нужен драйвер код...

Мультимедиа контролер PCI\VEN_14F1&DEV_8800&SUBSYS_EA3D14F1&REV_05\4&25700A26&0&3020
Помогите пожалуйста найти драйвер на мультимедиа видеоконтролер ...

немогу найти драйвера на PCI\VEN_1039&DEV_7012&SUBSYS_810D1043&REV_A0\3&61AAA01&0&17
Мультимедиа аудиоконтроллер PCI\VEN_1039&amp;DEV_7012&amp;SUBSYS_810D1043&amp;REV_A0\3&amp;61AAA01&amp;0&amp;17

Драйвера на PCI\VEN_10B7&DEV_1700&SUBSYS_80EB1043&REV_12\4&2E98101C&0&28 F0
помогите плиз - вот ID: PCI\VEN_10B7&amp;DEV_1700&amp;SUBSYS_80EB1043&amp;REV_12\4&amp;2E98101C&amp;0&amp;28F0 ...

при запуске макроса в месте выполнения создания файла Код 1 2 Open ActiveWorkbook.Path & ' ' & FileName & '_name.txt' For Output As #1 ошибка
Народ, беда такая: при запуске макроса в месте выполнения создания файла Open...


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

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