Поток с и без утечки памяти - PullRequest
0 голосов
/ 14 октября 2011

Я застрял с присваиванием c ++, где я должен создать простой поток и другой поток, имеющий ту же логику, но с утечкой памяти.

Это должен быть простой пример потока, даже неделать что-нибудь полезное само по себе.Поэтому я предполагаю, что мой вопрос заключается в том, что является самым простым потоком, который может быть создан в c ++, и если я правильно понял, что для того, чтобы сделать это утечкой памяти, я должен создать переменную, которая никогда не удаляется?Также следует ли поместить эту «утечку» в цикл или сделать так, чтобы она повторялась каким-то другим образом ... потому что для меня просто оставить одну переменную без восстановления не кажется большой утечкой.

Ответы [ 3 ]

0 голосов
/ 14 октября 2011

Вы всегда можете выделить большой объект (например, большой буфер) и никогда не освобождать его;таким образом, одиночное выделение будет существенной утечкой памяти.

Кроме того, если у вас был поток, который был сконструирован как некий часто называемый рабочий поток, и имелась небольшая утечка памяти во время выполнения вашегопрограмма, с которой вы могли бы легко столкнуться с проблемами с памятью из-за утечек в стиле «смерть тысячи порезов».

0 голосов
/ 14 октября 2011

Существует библиотека Boost Thread, которая, вероятно, является самым простым вариантом для потоков в C ++.Да, утечка памяти - это просто неустановленная переменная.Если вы не хотите утечки памяти с одной переменной, просто выделите массив любого размера, который вы считаете необходимым.new char[x], где x - это сколько байтов утечки памяти вы хотите

0 голосов
/ 14 октября 2011

Этого будет достаточно для утечки:

new char;

Вы можете поместить ее в цикл, если хотите большего, но будьте осторожны -

while( true ) {
    new char;
}

приводит большинство систем костанавливаются довольно быстро - они начинают меняться и становятся практически непригодными для использования.ИМО, вы должны придерживаться утечки нескольких объектов, если у вас нет других особых требований.

...