0 / 0 / 0
Регистрация: 04.07.2019
Сообщений: 38
|
||||||
1 | ||||||
Утечка памяти в реализованном(частично) классе Array25.02.2021, 17:30. Показов 655. Ответов 11
Метки нет (Все метки)
Всем ку! Имею код:
Вроде как все работает, но после определенного теста(проверка на ресурсе Stepik) - выдает утечку памяти. Помогите понять при каком варианте может появляться такая трабла, и где поправить код.]
0
|
25.02.2021, 17:30 | |
Ответы с готовыми решениями:
11
HttpWebRequest, расход памяти непомерно больших объемов и , как следствие, утечка памяти Вектор, утечка памяти, функция создания и выделение памяти Динамические массивы в классе Array Отсутствует свойство Contains в классе Array |
"C with Classes"
|
|||||||||||
25.02.2021, 17:45 | 2 | ||||||||||
Vasily Tyorkin, если копирующий конструктор реализован верно, то Герб Саттер рекомендует реализовать оператор присваивания через него. Пример:
1
|
0 / 0 / 0
Регистрация: 04.07.2019
Сообщений: 38
|
|
25.02.2021, 18:03 [ТС] | 3 |
Если сделать так:
то не проходит тест где a[0] = b[1];
0
|
0 / 0 / 0
Регистрация: 04.07.2019
Сообщений: 38
|
|
25.02.2021, 18:12 [ТС] | 5 |
Эта строчка была добавлена после проверки. Что-бы можно было выполнить условие написанное выше. Можно в расчет не брать.
Утечка была до этого.
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
25.02.2021, 19:47 | 6 | |||||
0
|
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
25.02.2021, 19:58 | 8 |
0
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
26.02.2021, 04:54 | 9 |
1. здесь потенциальная утечка:
2. здесь потенциальный баг: история болезни: 1. сначала ты удаляешь данные: delete[] data 2. теперь указатель указывает на чужую память. 3. далее ты выделяешь новый кусок памяти: this->data = new T[_size] 4. new кидает исключение. 5. data по прежнему указывает на чужую память. 6. объект класса впал в неконсистентное состояние. 7. его дальнейшая эксплуатация - UB. так например, если дойдет до деструктора, тогда: деструктор попытается грохнуть чужую память,
0
|
0 / 0 / 0
Регистрация: 04.07.2019
Сообщений: 38
|
||||||
26.02.2021, 13:58 [ТС] | 10 | |||||
Хех, всё оказалось довольно просто. Где указано поле data перед ним нужно добавить this->, то бишь this->data.
Это исправленный варик:
if(this != &other){ delete[] this->data; это проверка на присваивание самому себе. Всем спасибо, всем пока!
0
|
"C with Classes"
|
|
26.02.2021, 14:20 | 11 |
тебе же говорят, что если ты освободишь память, а
new не хватит памяти для нового объекта и он вызовет исключение? освобождать старую память нужно после того как получишь новую, а то рискуешь оставить объект в корявом состоянии.
1
|
0 / 0 / 0
Регистрация: 04.07.2019
Сообщений: 38
|
|
26.02.2021, 14:31 [ТС] | 12 |
Я понял, спасибо, тогда задание малость некорректное получается, или просто опустили этот момент в проверке решения.
0
|
26.02.2021, 14:31 | |
26.02.2021, 14:31 | |
Помогаю со студенческими работами здесь
12
Array.Resize в отдельном классе Исправление ошибок в классе Array Перегрузка оператора в классе Array Создать класс Array в классе Конструктор Утечка памяти Утечка памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как написать микросервис с нуля на C#
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
|
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
|
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
|
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
|
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента!
4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве).
Первое вводное занятие. . .
|
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
|
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений
Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
|
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
|
UserScript для подсветки кнопок языков программирования в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения:
/ / ==UserScript==
/ / @name CF_DefaultLangSelect
/ / . . .
|
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
|
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
|
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
|