Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
NinjaNoob
1 / 1 / 0
Регистрация: 21.12.2012
Сообщений: 19
#1

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

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

Привет.
При вызове конструктора вылетает эта ошибка.
При вызове конструктора ошибка: 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2014, 18:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При вызове конструктора ошибка: L "Buffer is too small" & & 0 (C++):

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

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

Strcpy_s выдает ошибку L Buffer is too small & & 0 - C++
strcpy_s выдает ошибку L Buffer is too small & & 0 22 строка #include <iostream> #include <clocale> #include <ctime> int main () ...

В цикле после 100 итерации ошибка исполнения "Buffer too small" - C++
код такой: for (int i = 1; i <= 256; i++) { cout << GetVal(i) << ","; } GetVal(i) это string. на 100 итерации падает с ...

Где ошибка невозможно преобразовать указатель "this" из "const pers" в "pers &" при выводе объектов через cout - C++
Добрый день! Переписал код из книг Лафоре, создание мультимножества из собственных объектов- справочник телефонный, с именем и фамилией. ...

"no matching function for call to" ошибка в вызове конструктора - C++
имеется следующий класс makeworldtemplate.h #ifndef MAKEWORLDTEMPLATE_H #define MAKEWORLDTEMPLATE_H #include <list> ...

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

Добавлено через 2 минуты
Стандарт:
http://www.cplusplus.com/reference/cstring/strcpy/?kw=strcpy
http://www.cplusplus.com/reference/cstring/strncpy/
0
NinjaNoob
1 / 1 / 0
Регистрация: 21.12.2012
Сообщений: 19
23.03.2014, 19:31  [ТС] #9
студия не дает использовать обычную strcpy. заставляет использовать strcpy_s, которая уже с тремя параметрами
При вызове конструктора ошибка: L "Buffer is too small" & & 0
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.03.2014, 19:39 #10
Цитата Сообщение от NinjaNoob Посмотреть сообщение
студия не дает использовать обычную strcpy
Смотря какая студия (до 10-й включительно - даёт). А если не даёт (паранойя microsoft), то можно сделать, чтобы давала:
Ошибка в SCANF
1
supvlmail
-49 / 1 / 0
Регистрация: 12.03.2015
Сообщений: 24
29.06.2016, 07:50 #11
При использовании strcpy строка может выйти за пределы выделенной памяти, лучше использовать strncpy.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2016, 08:05
Привет! Вот еще темы с ответами:

For(auto const& val : stime) .cpp(47) : error C2143: синтаксическая ошибка: отсутствие "," перед ":" - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdexcept&gt; #include &lt;locale&gt; #include &lt;cstdlib&gt; #include &lt;string&gt; #include...

Expression: ("buffer too small", 0) - C++
Скажите в чем проблема. Если объявить как char w_str, все работает. Как записывать строку в бинарный файл с помощью указателя? программа...

В чём разница между возвратом "string" и "const string&" & - C++
class test { public: test(const string&amp; text) { this-&gt;text = text; } string getText() { return text;

Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;) - C++
Хочу специализировать swap для своего класса. Получаю ошибку. Вот код:#ifndef A_H #define A_H #include &lt;string&gt; class A { ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru