Aleksei
Утечек нет, проверялось. На всякий случай проверю еще раз, но памяти столько выделяется почти сразу после начала работы
Mikhail
Всем привет.
Столкнулся с проблемой, что программа жрет много оперативки, хотя казалось бы не должна.
Есть виртуалка (kvm) с примерно 800 мб оперативы и линуксом (а-ля дебиан). Иногда программе не хватает памяти и её убивает операционка. Смотрел top'ом, он показывает, что она использует 80%.
Решил посмотреть, что пишет massif. Если запускать с обычными параметрами, то он показывает 79мб в пике (по прикидкам, столько и должно быть). Попробовал запустить с параметром --pages-as-heap=yes, тут он и показал 700+ мб. Но вот откуда они берутся, я не понимаю. Например, вызов setlocale выделяет 113 метров O_O. И таких мест не одно...
Сделал пример простейший
https://gist.github.com/krepver/cab74d6c576f03bebbb26b49f4aa1d52
Откуда они берутся? И можно ли что-то с этим сделать?
вообщем погугли, либо подожди когда еще народ подтянется.
лично я хз в чем проблема
Aleksei
Память по факту съедается (процесс убивается операционкой). Какие есть варианты диагностики, помимо massif ?
Aleksei
Я понимаю, но ведь я не выделяю этих 700+ мб
Aleksei
top ом
Aleksei
Это понятно. Без моей программы используется <100 мб оперативы. С моей почти все 800...
Mikhail
Aleksei
Aleksei
Qt не использует
Mikhail
если ты о perf то скорее всего надо будет перекомпилировать все. чтобы вместо адресов увидеть функции
Mikhail
как по мне достаточно пару тройку дампов с ps чтобы понять что там такое происходит
Max
У меня была схожая проблема, решал так. Была dll на винде, которую использовали время от времени другие процессы. Это все дело происходило во время ночных тестов, каждую ночь, пока все дружно спали, а клиент за океаном работал. Поскольку наша либа дергалась рандомно в разные моменты времени, и там нельзя было нормально отследить, как все запускается, я просто добавил сервис, который мониторил dll и каждую секунду записывал обьем поглощаемой памяти. Дальше в каждое место, где потенциально могли быть утечки, записывал логи. Потом сопоставил время из логов сервиса и самой dll и нашел за 5 сек.
D.
'std::pair<std::string*, A*> pair (new std::string, new A);'
при уничтожение pair. Память под объекты A и string сама очиститься или как ?
Max
Max
Нужно руками удалять, если у тебя в контейнере сырые указатели.
D.
delete pair.first ;
D.
Так ?или как?
D.
Сории
Berkus
Max
for (auto p : pair) { delete p.first; delete p.second; }
Max
Но это тоже плохой вариант, т.к. в процессе работы ты можешь по ключу перетирать значения новыми, и те, которые затерялись, не удалишь.
Igor
надо чувакам идею про патреон закинуть
Igor
да
они прямым текстом в посте пишут "нам нужна не одна богатая организация, а с миру по нитке", и вот для такого патреон зайдёт просто в десяточку
Годбольту на его компилятор, реддит за несколько часов собрал патронов на в 4 раза больше денег, чем ему изначально было нужно)
Igor
и чтобы на реддите обязательно пропиарились!)
Anonymous
Привет. А вакансии вы публикуете? Можно по тегу их поискать?
Ruslan
ЧЯДНТ? deprecated conversion from string constant to 'char*'
char* x[] = {"test"};`
kitsu
Anonymous
Ему массив строк похоже надо.
Ruslan
да
Igor
Egor
Anonymous
Ruslan
const char*
пробовал уже
не катит
новый эрор
ща приведу
Egor
Предлагаю перейти в #supapro
Max
Egor
Сие, небось, warning, не error
Ruslan
короче суть такова что если const то x[1] уже не LPSTR
Egor
Ну, да.
Igor
ну так может быть тогда LPSTR x[] ?)
и да, 1) @supapro 2) код в студию
Igor
винапи никто не любит, но иногда приходится)
RAwesoMeat
винапи никто не любит, но иногда приходится)
Почему ж, на нем можно сделать кейлоггеры, можно декриптить кукисы брайзеров, можно закриптить диск без проблем и заморочек :) Другое дело в линуксе, всех этих фич нет. Линукс потому и отстойным считается, Ы!)
Igor
ну вот я и говорю, иногда приходится иметь дело с чем-то виндовс-онли
Stanislav
Stanislav
особенно забавляет __interface
Igor
о чём ты, у них #define max ... )
Stanislav
Stanislav
но типы через тайпдефы)
Stanislav
брр
Stanislav
кто-то по старой памяти чтоли пишет
Bm
Здравствуйте, Я начинающий, подскажите где взять документацию по функциям std ?
Matwey
Господа
Matwey
А вам роскомнадзор тоже забанил slideshare.net?
Roman
Igor
ничего не знаю, у меня всё ок
Egor
Bm
Спасибо
RAwesoMeat
у них куча своих странных тайпдефов
Это бич! У них по тайпдефам страниц МСДН можно насчитать больше, чем в доках по ядру линукса. Но это не холливар! (Не, я правда не развожу холливар, ибо самому приходится трудиться на оба фронта. Я как лодочник на стиксе.)
Stanislav
но все лень, поэтому забанили весь ресурс
Matwey
Anonymous
Stanislav
Matwey
Тут в госдуме предложили запретить пропаганду криминальной субкультуры в интернете
Matwey
Тогда можно будет зайти в этот чат, сказать "вечер в хату". И чат забанит роскомнадзор.
Matwey
По-моему, здорово
RAwesoMeat
Stanislav
Matwey
Я между прочим поперся на slideshare за тем, чтобы узнать у NVidia как мне правильно писать на opengl. А плюсы тут притом, что на них код который дергает opengl.
Anonymous
Ребята , кто может порекомендовать программиста , под инсту софт запилить
Egor
Matwey
kitsu
Как можно сделать класс, чтобы:
- при lvalue параметре конструктора, оно сохранялась в поле класса как consr ref
- при rvalue перемещалось значение в то же поле