170 похожих чатов

Плиз ребзя подскажите, есть ли у мен\ утечки памяти, задана

сортировка слиянием списка, именно списка!! Меня интересует, там где я присваиваю список из массива другому списку
#include <iostream>
#include <list>

typedef std::list<int> Mylist;

void mergeSort(Mylist &list)
{
//длина списка
int n = list.size();
Mylist a;
Mylist b;

//------------разбиение на два списка----------------
while (list.size() > 0)
{
a.push_back(list.front());
list.pop_front();

if (list.size() > 0) {
b.push_back(list.front());
list.pop_front();
}
}
//---------------------------------
//q - размер a; r - размер b; m - размер a + b
int q, r, m;
Mylist arrLists[2];
// размер серий
int p = 1;
//активная очередь
int i;

while (p < n)
{
i = 0;
m = n;
arrLists[0].clear();
arrLists[1].clear();
while (m > 0)
{
q = (m >= p) ? p : m;
m -= q;
r = (m >= p) ? p : m;
m -= r;
//------------слияние списков a и b в c_i-------------

while (q > 0 && r > 0)
{
if (a.front() < b.front()) {
arrLists[i].push_back(a.front());
a.pop_front();
q--;
}
else
{
arrLists[i].push_back(b.front());
b.pop_front();
r--;
}
}
while (q > 0)
{
arrLists[i].push_back(a.front());
a.pop_front();
q--;
}

while (r > 0)
{
arrLists[i].push_back(b.front());
b.pop_front();
r--;
}
//-----------------------------------------
i = 1 - i;
}
a = arrLists[0];
b = arrLists[1];
p *= 2;
}

list = arrLists[0];
}

int main()
{
Mylist list = { 2, 4, 6, 1, 9, 0, 4, 6, 3, 10 };
mergeSort(list);
for (auto el : list)
{
std::cout << el << " ";
}
std::cout << std::endl;
}

15 ответов

4 просмотра

проверяй при помощи valgrind

Антон- Автор вопроса

я сейчас скомпилил твой код и проверил

Ты хоть в одном месте память-то выделяешь? Где хоть одно выделение динамическое объектов ?

Антон
Нет, все статическое

Тогда откуда бы утечки взялись..

Антон- Автор вопроса
Ilya Zviagin
Тогда откуда бы утечки взялись..

Я думал сам список внутри использует динамическое выделение и его надо убивать

Антон- Автор вопроса
Ilya Zviagin
использует. Не надо.

А при присвоении списка в другую переменную, он полностью скопируется? То есть будет выделена новая память?

Антон- Автор вопроса
Ilya Zviagin
да

А если это список инстансов объектов, как мне этот список присвоить в другую переменную, чтобы не создавались новые объекты?

Антон- Автор вопроса
Ilya Zviagin
Никак

А что делать? Список указателей на объекты, все же вычисления сбросятся при создании новых инстанс

Антон
А что делать? Список указателей на объекты, все же...

Список указателей на объекты длеать. Что там сбросится — не понял.

Антон- Автор вопроса
Ilya Zviagin
Список указателей на объекты длеать. Что там сброс...

В объекте вычисление и его в список добавил, а потом список присвоил в другую переменную,создадуться новые объекты и вычисления пропадут?

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
12
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
вопрос по москвину - не понимаю вот такого вопроса похоже Сколько разных всегда завершающихся функций с типом a -> a -> b -> a -> a можно реализовать? Две функции одинаково...
Fedor
11
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
что, сложно ифдеф на версию компилятора сделать?
Iluha Companets
6
Карта сайта