Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
#1

Жор памяти - C++

04.07.2013, 02:07. Просмотров 611. Ответов 18
Метки нет (Все метки)

простой класс, так для примера. смотрю по диспетчеру, чем больше NumTurns, тем больше память, непорядок
main.cpp
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include "qwerty.h"
using namespace std;
int main()
{   qwerty q;
    std::cout << q.u[2] << "\n";
    q.free_mem();
}
qwerty.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef QWERTY_H
#define QWERTY_H
class qwerty
{    public:
        qwerty();
        virtual ~qwerty();
        int *u;
        void free_mem();
    protected:
    private:
    static const int NumTurns = 50000; // объявление константы
    int scores[NumTurns]; //
};
#endif // QWERTY_H
qwerty.cpp
C++
1
2
3
4
5
6
7
8
9
10
#include "qwerty.h"
qwerty::qwerty()
{  u = new int[NumTurns];
for (int i=0;i<NumTurns;i++)
    {scores[i] = i;u[i] = 2*scores[i];}
}
void qwerty::free_mem()
{delete[] u;}
qwerty::~qwerty()
{free_mem();}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 02:07     Жор памяти
Посмотрите здесь:

Построить модуль памяти заданной емкости на базе устройств памяти меньшей емкости с последовательным распределением адресов по устройствам - Программируемая логика
Подскажите пожалуйста кто сможет, как сделать вот это задание: Построить модуль памяти заданной емкости на базе устройств памяти меньшей...

Перезагружается компьютер после установки памяти + нет настройки памяти в BIOS - Оперативная память
Добрый день! Помогите пожалуйста разобраться в следующей ситуации, после установки оперативной памяти Kingston DDR3-1600 8192MB...

Выбор памяти для материнской памяти Gigabyte GA-F2A88XN-WIFI - Оперативная память
Всем доброго дня! Есть материнская плата Gigabyte GA-F2A88XN-WIFI в ее спецификациях на официальном сайте в разделе Memory есть...

В поле дампа памяти вывести на экран содержимое данной памяти [bx+di] - Assembler
Имеется функция IDIV word ptr . Но предварительно мы записываем значение в данную область памяти т.е mow ,0005. вопрос,как мне в поле...

1 Гб не буферизованной памяти или 2 Гб памяти с буферизацией. Как это понимать ? - Компьютерное железо
1 Гб не буферизованной памяти или 2 Гб памяти с буферизацией Как это понимать ? И что будет если я установлю 2 Гб не буферизованной...

Сколько памяти Вам действительно нужно?(полезная статья при выборе памяти) - Оперативная память
Сколько памяти Вам действительно нужно? Компьютер поставляется со стандартным набором памяти, и разработчики программного обеспечения...

Распределение памяти для выделения и освобождения блоков памяти внутри запрошенного пула - C (СИ)
В программе малые&quot;дыры&quot; избегают,что нужно сделать что бы малые &quot;дыры&quot; не избегались.... # include &lt;stdio.h&gt; # include &lt;stdlib.h&gt; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
04.07.2013, 02:17     Жор памяти #2
а что ты ожидал увидеть? У тебя выделяется 2 массива по 50000 элементов каждый!
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
04.07.2013, 02:22  [ТС]     Жор памяти #3
я хочу сделать так, чтобы всё удалялось,т.е. деструктор организовать, но не знаю как
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,750
04.07.2013, 02:35     Жор памяти #4
Не вижу причин для утечки памяти в данном коде, вроде бы деструктор написан верно.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
04.07.2013, 02:39  [ТС]     Жор памяти #5
чем больше NumTurns, тем больше память в диспетчере - это ведь плохо. вот я и задумался.
может
C++
1
int scores[NumTurns]
не исчезает?
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,750
04.07.2013, 02:42     Жор памяти #6
soican, что значит
Цитата Сообщение от soican Посмотреть сообщение
память в диспетчере
?
Если вы про память, выделяемую ОС для программы - то ничего удивительного, вы же сами требуете её под массивы.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
04.07.2013, 02:53  [ТС]     Жор памяти #7
а про какую память можно ещё говорить, оперативную...ну требую, а потом перестаю требовать, и хочу освободить...если б там не 50000 было, а 50000000
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.07.2013, 02:58     Жор памяти #8
Цитата Сообщение от soican Посмотреть сообщение
может Код C++
1 int scores[NumTurns]
не исчезает?
Почему он должен исчезнуть?

Добавлено через 2 минуты
Цитата Сообщение от soican Посмотреть сообщение
а потом перестаю требовать, и хочу освободить..
Сами можете освободить только то, что сами и выделили. Память, на которую u указывает - можете, под scores - нет.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
04.07.2013, 21:16  [ТС]     Жор памяти #9
то есть статические массивы это зло... в принципе я нашёл способ? через функцию когда обращаешься, то без проблем: память не "жрётся"
C++
1
2
3
4
void helo()
{   qwerty q ;
     cout << q.u[45] <<  endl;
}
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.07.2013, 21:29     Жор памяти #10
если память в диспетчере не уменьшается - это еще не значит, что она занята.
система может не забирать ее у процесса до тех пор, пока она действительно не понадобится
другим приложениям. а вот если понадобится этому же, то выделение пройдет быстрее.
есть на эту тему даже теория, согласно которой, если вы запросили n памяти, то очень вероятно
вам вскоре понадобится n*x. по этим же причинам у вектора как правило емкость больше, чем
количество элементов. что-бы однозначно говорить об утечках - нужно использовать специальные
инструменты.
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
04.07.2013, 21:34  [ТС]     Жор памяти #11
Цитата Сообщение от DU Посмотреть сообщение
нужно использовать специальные
инструменты
скажи какие? я хочу с этой темой серьёзно разобраться
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.07.2013, 21:39     Жор памяти #12
ключевые слова типа: memory leak detection c++
поисковик поможет
MrGluck
Модератор
Эксперт CЭксперт С++
7163 / 4329 / 632
Регистрация: 29.11.2010
Сообщений: 11,750
05.07.2013, 00:21     Жор памяти #13
Цитата Сообщение от soican Посмотреть сообщение
скажи какие? я хочу с этой темой серьёзно разобраться
valgrind
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
05.07.2013, 20:20  [ТС]     Жор памяти #14
Цитата Сообщение от MrGluck Посмотреть сообщение
valgrind
мне для windows

Добавлено через 5 часов 51 минуту
отпишусь, может кому понадобится.
скачал щяс Dr. Memory с https://code.google.com/p/drmemory/ (там же документация как пользоваться)
провел пробный тест для:
C++
1
2
3
4
5
6
int main()
{char *pointer = 0;
 for( int i = 0; i < 10; i++ )
   pointer = new char[100];
delete [] pointer;
}
появился лог с указанием кучи всякой инфы, но самое главное - с указанием строчки, где происходит утечка памяти(pointer = new char[100]; )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2013, 20:25     Жор памяти
Еще ссылки по теме:

Выделить в памяти 1024 ячейки по 8 байт и вывести их адреса(МИНИ менеджер памяти)) - C++
Вот тут появилась такая интересная задача: требуется сделать программу которая управляет 1024 ячейками памяти по 8 байт каждая. т.е. за...

Непонятный расход памяти (ничего не запущено, кроме антивируса, а расходуется 900 МБ памяти) - Windows 7
Объясните, почему у меня ничего не запущено, кроме антивируса, а расходуется 900 МБ памяти?

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

На GeFoce GT 230 с 1,5 гига памяти доступно только 255 мегабайт графической памяти. - Видеокарты
У меня GeForce GT230 1,5 гига памяти. Но под виндой доступно только 255 мегабайт графической памяти. С чем это связано?

Какую лучше выбрать видеокарту - с большим объёмом памяти или большими частотами памяти? - Видеокарты
Какую лучше выбрать видеокарту - с большим объёмом памяти или большими частотами памяти?! Всё вместе не получается(


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

Или воспользуйтесь поиском по форуму:
svk2140
-8 / 0 / 1
Регистрация: 04.07.2013
Сообщений: 263
05.07.2013, 20:25     Жор памяти #15
ну ты же выделяешь память для массива сразу 50к!!! (50 000) сделай постепенную выдачу, использование, удаление памяти
Yandex
Объявления
05.07.2013, 20:25     Жор памяти
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru