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

Высвобождение динамической памяти

31.07.2018, 12:41. Показов 3078. Ответов 29

Студворк — интернет-сервис помощи студентам
Нужна помощь, в проблеме высвобождения памяти, все делаю по стандартам С++, но постоянно выдает ошибки.

Фото 1, в случае, если пытаюсь освободить память через оператор
C++
1
delete[] multiply
Фото 2 выходит постоянно, когда не освобождая память, повторно запускаю программу, и записав в массив уже другие значения.
Например при первом запуске, были заданы значения 5, а во втором уже 6 или любое другое, то выходит вторая ошибка.

При попытке просто игнорировать - "ПРОПУСТИТЬ" в первом случае ничего не происходит, во втором случае аварийно завершается программа.
Миниатюры
Высвобождение динамической памяти   Высвобождение динамической памяти  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.07.2018, 12:41
Ответы с готовыми решениями:

Долгое высвобождение памяти
Здравствуйте. Возможно, такой вопрос уже встречался, но ответа мне найти не удалось. Намахал template List. ~List(){ Item *srh =...

Корректное высвобождение памяти в list
У меня все нормально работает, ну и по логике тоже вроде нормально, но намучился с Коректным высвобождением памяти(ну пару раз упала...

Высвобождение памяти для 3 измерения массива
Здравствуйте. Не могу понять почему выходит ошибка. Я сделал 3х мерный массив, у которого 2 строки . Он неравномерный. В 1 строке 3...

29
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
10.01.2019, 14:58
Студворк — интернет-сервис помощи студентам
Yetty, ваша терминология не очень понятна. Как можно уменьшить размер динамически выделенного массива без использования realloc(), который неприменим к памяти, выделенной через new? Уменьшение значения size никак не влияет на размер выделенного массива и относится скорее к тому, о чем говорит Kuzia domovenok: использовать его не полностью. Или он не прав?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.01.2019, 14:58
Azazel-San, массив объявлен так:
C++
1
int*a = new int[10];
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
10.01.2019, 15:02
Цитата Сообщение от Yetty Посмотреть сообщение
массив объявлен так:
тогда делать realloc я бы не стал, изменить блок памяти в куче как-то иначе не думаю что можно, нативными средствами С++, для остального обычно используют другие структуры данных.
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
10.01.2019, 15:06
Azazel-San, при уменьшении размера блока данные же сохраняются. Или нет?
The content of the memory block is preserved up to the lesser of the new and old sizes, even if the block is moved to a new location.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
10.01.2019, 15:08
Цитата Сообщение от valen10 Посмотреть сообщение
Или нет?
К чему тогда спрашиваете?) При уменьшении да, я более для общего случая сказал, спасибо за поправку. Как-то не подумал.
0
 Аватар для qppq
145 / 89 / 23
Регистрация: 31.08.2016
Сообщений: 780
Записей в блоге: 2
10.01.2019, 15:23
C++
1
2
char i[] = "12345";
i[4] = '\0';
массив не динамический, но всё же
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
10.01.2019, 15:24
Цитата Сообщение от qppq Посмотреть сообщение
массив не динамический, но всё же
и что скажете размер выделенной области в памяти стал на 1байт меньше?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.01.2019, 15:25
Цитата Сообщение от valen10 Посмотреть сообщение
Уменьшение значения size никак не влияет на размер выделенного массива
так не точнее будет: уменьшение значения size никак не влияет на размер памяти, выделенной под массив ?
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
10.01.2019, 15:35
Цитата Сообщение от Yetty Посмотреть сообщение
уменьшение значения size
если вы о векторе и о его методе resize, то да, размер блока памяти не изменится, это если делать resize в меньшую сторону, если в большую то capacity уже увеличится (в соответствии с политикой выделения вектора).
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
10.01.2019, 15:50
Yetty, это тоже верно и даже наверное точнее. На мой взгляд, путаницы было бы меньше, если бы при работе с динамически выделенным массивом не смешивали понятия размер массива и размер выделенного блока, а разделяли их, как это сделано в std::vector. Тогда бы можно было без проблем уменьшать размер массива, не теряя размер блока на случай, если массив вновь придется увеличить. Одно не могу понять: зачем этим заниматься вручную, когда стандартная библиотека предоставляет необходимый инструмент.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.01.2019, 15:50

Удаление динамической памяти
В книгах по С++ я читал про утечку памяти. Я решил создать программу, в которой будет выделаться 1 Гб памяти и не удаляться. Будучи...

Перераспределение динамической памяти
дан двумерный массив 3х5 выделить динамически память под него, затем перераспределить ее в массив 5х3, затем удалить(выделить и удалить там...

Выделение динамической памяти
Добрый вечер. Помогите разобраться пожалуйста! Суть такова: есть файл, в нем есть данные, мне надо их оттуда считать и вывести на...

Освобождение динамической памяти
Здравствуйте! Была задача реализовать сложение длинных чисел с помощью стеков. Сам стек реализовал просто, но всё же проблемы есть -...

Освобождение динамической памяти
После первого вызова функции(при повторном) пишет ошибку. В функции sort один из элементов массива становится недоступным для чтения. Если...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru