С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 19.02.2022
Сообщений: 2

Как избавиться от предупреждений С6385 и С6386 при работе с динамическим массивом?

19.02.2022, 21:30. Показов 2872. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо задать динамический массив структур из номера строки и указателя на строку и по запросу пользователя инвертировать одну из строк. При компиляции на моменте с инвертированием строки номер "a" компилятор VS Studio 2019 выдает предупреждения C6385 и C6386 (строки 51 и 52 соответственно). Никак не могу понять, отчего так. Код прилагаю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
#include <string>
 
struct recs {
    int k;
    char* str;
};
 
int main()
{
    int num;
    std::cout << "Enter num" << std::endl;
    std::cin >> num;
    std::cin.get();
    
    recs *Array = new recs[num]; //массив структур
    int *stringlength = new int[num]; //массив длин строк соответвующих элементов структур (для удобства)
    
    for (int i = 0; i < num; i++)
    {
        Array[i].k = i;
        std::string string;
        std::cout << "Enter string " << i+1 << std::endl;
        std::getline(std::cin, string);
        int size = string.length() + 1;
        stringlength[i] = size-1;
        
        Array[i].str = new char[size]; //динамический массив для хранения i-й строки
        for (int j = 0; j < size; j++)
        {
            Array[i].str[j] = string[j];
        }
    }
 
    try
    {
        int a;
        std::cout << "Enter the number of string to invert" << std::endl;
        std::cin >> a;
        int invert = a - 1;
        if (a > num)
            throw "There is no such string";
        if (a < 1)
            throw "There is no such string";
        
        int len = strlen(Array[invert].str);
        int k = len - 1;
        for (int i = 0; i < (int)((len-1) / 2); i++)
        {
            char t;
            t = Array[invert].str[i];
            Array[invert].str[i] = Array[invert].str[k];
            Array[invert].str[k] = t;
            k = k - 1;
        }
    }
    catch(const char*)
    {
        std::cout << "Error: there is no such string";
        delete[] Array;
        delete[] stringlength;
        Array = 0;
        stringlength = 0;
        exit(0);
    }
    std::cout << "" << std::endl;
 
    for (int z = 0; z < num; z++)
    {
        std::cout << Array[z].k+1 << " || " << Array[z].str << std::endl; 
        delete[] Array[z].str; //возвращение памяти системе
    }
    delete[] Array; 
    delete[] stringlength;
    Array = 0;
    stringlength = 0;
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.02.2022, 21:30
Ответы с готовыми решениями:

При завершении работы кода программа выдаёт ошибку срабатывания точки останова, и предупреждения С6386, С6385
#include&lt;iostream&gt; using namespace std; int main() { int stop = 10; int quantity = 1; int *arr = new int; for...

Ошибка при работе с динамическим массивом
Добрый день! Не могу найти ошибку при работе с динамическим массивом. Хочу использовать доступ к данным как к двумерному так и...

Ошибка при работе с динамическим массивом
Всем доброго времени суток! Для осуществления алгоритма нужно ипользовать массив размерностью 639х479. Я использую динамический массив,...

5
 Аватар для ram876
759 / 456 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
19.02.2022, 21:48
А у вас #include <cstring> подключен?
0
фрилансер
 Аватар для Алексей1153
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,021
19.02.2022, 21:56
Цитата Сообщение от savvakhrenkov Посмотреть сообщение
выдает предупреждения
текст предупреждений то какой ?

Добавлено через 2 минуты
savvakhrenkov, кстати, это учебное задание на динамические массивы или боевой код? В последнем случае можно всё упростить
0
0 / 0 / 0
Регистрация: 19.02.2022
Сообщений: 2
19.02.2022, 22:06  [ТС]
C6385 Чтение недопустимых данных из "Array[invert].str": доступный для чтения объем равен "size*1" байт, однако считать можно только "2" байт.
C6386 Переполнение буфера при записи в "Array[invert].str": доступный для записи объем равен "size*1" байт, однако записать можно только "2" байт.

Добавлено через 4 минуты
Цитата Сообщение от Алексей1153 Посмотреть сообщение
это учебное задание на динамические массивы или боевой код
Учебное задание
Надеюсь, вопросы по таким темам не запрещены правилами? Не нашел такого пункта, если что, поправьте меня.

Добавлено через 2 минуты
Цитата Сообщение от ram876 Посмотреть сообщение
А у вас #include <cstring> подключен?
Подключена библиотека
Code
1
<string>
. На
Code
1
<cstring>
мой VS плюется и не находит.
0
 Аватар для ram876
759 / 456 / 213
Регистрация: 19.12.2016
Сообщений: 1,815
19.02.2022, 22:10
Цитата Сообщение от savvakhrenkov Посмотреть сообщение
не находит.
Как тогда strlen может работать?
0
 Аватар для PencilTorch
90 / 60 / 32
Регистрация: 06.08.2020
Сообщений: 220
19.02.2022, 22:21
В VS нормально работает с #include<string> хотя да, по идее strlen это сишный прикол.

А предупреждения мне думается это студию смущает некоторая непонятность переменной invert. Но на работу это не влияет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.02.2022, 22:21
Помогаю со студенческими работами здесь

Ошибка при работе с динамическим массивом
Народ можете подсказать пожалуйста, появляется вот такая ошибка при запуски вот такого кода #include &lt;iostream&gt; using...

Ошибка при работе с динамическим массивом
При работе внутри цикла компилятор пишет об исключении при нарушение прав доступа при чтении, очевидно, это из-за динамического массива....

Ошибка при работе с динамическим массивом
ошибка heap corruption detected: after normal block &quot;#355&quot; Ситуация такая, научился работать с динамическим массивом, чтение, вывод на...

Ошибка при работе с динамическим массивом
Добрый день! Не могу найти ошибку при работе с динамическим массивом. Хочу использовать доступ к данным как к двумерному так и...

Ошибка при работе с динамическим массивом строк
Всем привет, выполнял задание по программированию. Задание заключается в создании таблицы для спортивных игр. Есть динамический массив...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru