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

Обнаружено повреждение кучи. CRT обнаружил, что приложение записало данные в память после завершения работы буфера кучи

20.03.2023, 11:03. Показов 976. Ответов 19

Студворк — интернет-сервис помощи студентам
Задача "Обратный корень"

Условие: Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 10^18), отделённых друг от друга произвольным количеством пробелов и переводов строк. Размер входного потока не превышает 256 КБ.

Для каждого числа Ai, начиная с последнего и заканчивая первым, в отдельной строке вывести его квадратный корень не менее чем с четырьмя знаками после десятичной точки.

Я хочу решить задачу с помощью динамического массива. Но компилятор выдает следующее: ОБНАРУЖЕНО ПОВРЕЖДЕНИЕ КУЧИ: после обычного блока (#150) в 0x000001EEFBCDB420.
CRT обнаружил, что приложение записало данные в память после завершения работы буфера кучи. Подскажите, пожалуйста, в чем ошибка, и как это можно исправить?

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
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
void main()
{
    int size = 0, i = 0;
        int* a = new int[size];
    unsigned int x;
    while (cin >> x)
    {
        size += 1;
        for (; i < size;++i)
        {
            a[i] = x;
        
        }
 
    }
    
    for (int i = size-1; i >= 0; --i)
    {
        cout << fixed << setprecision(4) << sqrt(a[i]) << endl;
    }
    delete[] a;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.03.2023, 11:03
Ответы с готовыми решениями:

Даны три слова - "мама", "мыла", "раму". Задача - напечатать всевозможные варианты построения слов
Я записал код, однако эту часть надо автоматизировать, поможете? КОД: } #include &lt;iostream&gt; using namespace std; int...

Необработанное исключение в "0x76f015de" в "контрольная 1 задача 2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x334e2c64"
доброго времени суток. Необработанное исключение в &quot;0x76f015de&quot; в &quot;контрольная 1 задача 2.exe&quot;: 0xC0000005: Нарушение прав доступа...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;,...

19
фрилансер
 Аватар для Алексей1153
6442 / 5636 / 1127
Регистрация: 11.10.2019
Сообщений: 14,983
20.03.2023, 11:11
Цитата Сообщение от Igor215 Посмотреть сообщение
int size = 0, i = 0;
int* a = new int[size];
массив имеет размер 0

Добавлено через 1 минуту
Цитата Сообщение от Igor215 Посмотреть сообщение
void main()
ещё одна ошибка
0
0 / 0 / 0
Регистрация: 20.03.2023
Сообщений: 20
20.03.2023, 11:14  [ТС]
А то, что потом есть size +=1 все равно не влияет?
0
фрилансер
 Аватар для Алексей1153
6442 / 5636 / 1127
Регистрация: 11.10.2019
Сообщений: 14,983
20.03.2023, 11:16
Igor215, неа. Пересоздавай массив с новым размером. Или используй std::vector, это намного удобнее
1
0 / 0 / 0
Регистрация: 20.03.2023
Сообщений: 20
20.03.2023, 11:20  [ТС]
Ок, спасибо большое! Буду пробовать. Про vector знаю, но хочется разными способами порешать)
0
0 / 0 / 0
Регистрация: 20.03.2023
Сообщений: 20
21.03.2023, 20:56  [ТС]
Немного переделал код. Теперь проблема другого плана. Когда ввожу данные с клавиатуры - все считается корректно и без ошибок, а когда данные с сайта задач, то копируется без последнего элемента. А корни вообще выводит только для последних двух чисел. Помогите, пожалуйста.

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
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
 
void pop_back(int* &a, int& size, int x)
{
    size = size - x;          
    int* newa = new int[size];
    for (int i = 0; i < size; ++i)
    {
        newa[i] = a[i];
    }
    delete[] a;
    a = newa;
}
void main()
{
    int size1 = 0, size2=65536, i = 0;
    int* a = new int[size2] {};
    unsigned int x;
    while (cin >> x)
    {
        size1 += 1;
        for (; i < size1;++i)
        {
            a[i] = x;
            
        
        }
 
    }
    pop_back(a, size2, size1);
 
    for (int i = size1-1; i >= 0; --i)
    {
        cout << fixed << setprecision(4) << abs(sqrt(a[i])) << endl;
    }
    delete[] a; 
}
0
фрилансер
 Аватар для Алексей1153
6442 / 5636 / 1127
Регистрация: 11.10.2019
Сообщений: 14,983
21.03.2023, 20:59
Цитата Сообщение от Igor215 Посмотреть сообщение
void main()
код даже не компилируется

Добавлено через 1 минуту
Цитата Сообщение от Igor215 Посмотреть сообщение
данные с сайта задач
а где эти данные ?
0
0 / 0 / 0
Регистрация: 20.03.2023
Сообщений: 20
21.03.2023, 21:00  [ТС]
size2=65536 взял из того, что входных данных не больше 256 КБ, а int = 4 байт, поэтому 262144 / 4 = 65536 чисел максимум
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
21.03.2023, 21:01
В какой среде делаешь и зачем нужен цикл в 25?
0
0 / 0 / 0
Регистрация: 20.03.2023
Сообщений: 20
21.03.2023, 21:01  [ТС]
вот

1427 0

876652098643267843
5276538
0
0 / 0 / 0
Регистрация: 20.03.2023
Сообщений: 20
21.03.2023, 21:04  [ТС]
В Visual Studio 2022

В 25 цикл нужен для того, чтобы записать данные, которые пользователь вводит с клавиатуры,
а потом, пересоздавая массив в pop_back, избавиться от лишних нулей
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
21.03.2023, 21:06
У тебя каждая итерация while - одно число в массив. Зачем тогда внутренний цикл?
1
0 / 0 / 0
Регистрация: 20.03.2023
Сообщений: 20
21.03.2023, 21:06  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
код даже не компилируется

Добавлено через 1 минуту

а где эти данные ?
У меня всё компилируется, что с void, что с int
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
21.03.2023, 21:07
Алексей1153, может, это какая-то новая версия стандарта и теперь снова можно void?
0
фрилансер
 Аватар для Алексей1153
6442 / 5636 / 1127
Регистрация: 11.10.2019
Сообщений: 14,983
21.03.2023, 21:08
Igor215, размер int равен sizeof(int). Но лучше просто увеличивать динамический массив вдвое, когда места не хватает (так ведёт себя вектор)

Цитата Сообщение от Igor215 Посмотреть сообщение
876652098643267843
это число не влезет в int , если sizeof(int)==4
1
0 / 0 / 0
Регистрация: 20.03.2023
Сообщений: 20
21.03.2023, 21:08  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
У тебя каждая итерация while - одно число в массив. Зачем тогда внутренний цикл?
Действительно, надо убрать
0
фрилансер
 Аватар для Алексей1153
6442 / 5636 / 1127
Регистрация: 11.10.2019
Сообщений: 14,983
21.03.2023, 21:09
nmcf, Igor215, нет, это не новая версия стандарта, это нестандартный компилятор у ТС
0
0 / 0 / 0
Регистрация: 20.03.2023
Сообщений: 20
21.03.2023, 21:10  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Igor215, размер int равен sizeof(int). Но лучше просто увеличивать динамический массив вдвое, когда места не хватает (так ведёт себя вектор)


это число не влезет в int , если sizeof(int)==4
Да, точно. Спасибо большое!
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
21.03.2023, 21:11
Цитата Сообщение от Алексей1153 Посмотреть сообщение
это нестандартный компилятор у ТС
Так VS 2022 вроде бы серьёзный.
0
фрилансер
 Аватар для Алексей1153
6442 / 5636 / 1127
Регистрация: 11.10.2019
Сообщений: 14,983
21.03.2023, 21:12
Igor215, попробуй применить тип uint64_t

Добавлено через 54 секунды
nmcf, https://en.cppreference.com/w/... n_function
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.03.2023, 21:12
Помогаю со студенческими работами здесь

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются не менее чем одним символом пробела (...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); −...

Задача "замочная скважина" и "ключ" ошибка в коде
Почему-то не работает программа реализующая следующую задачу: Даны мозаичные изображения замочной скважины и ключа. Пройдет ли ключ в...

Как вывести "\\" двойной обратный слеш?
Вот как быть, мне выведет, что только один слэш, а мне надо два #include&lt;iostream&gt; using namespace std; void main() { ...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления"
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru