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

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

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

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

04.07.2013, 02:07. Просмотров 622. Ответов 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();}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 02:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Жор памяти (C++):

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

Можно ли разместить переменную в нужную ячейку памяти и реально ли хранить данные, разбросанными по памяти? - C++
Добрый день. Не могу найти информацию по двум вопросам : 1) могу ли я разместить переменную в нужную ячейку памяти. Например: int a...

Резервирование памяти/освобождение памяти для трехмерного массива - C++
Необходимо создать трехмерный массив (A), в котором элементы вдоль направления Z выли бы выровнены по 16 байт. Есть две проблемы: ...

Распределение памяти. Динамическое выделение памяти - C++
an-1 an-2 ... a2

Выделение памяти, проверка на утечку памяти - C++
Интересуют два вопроса: 1. Правильно ли устроен алгоритм выделения, удаление и запись ячейки памяти? Может быть, есть более простые...

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

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

Добавлено через 2 минуты
Цитата Сообщение от soican Посмотреть сообщение
а потом перестаю требовать, и хочу освободить..
Сами можете освободить только то, что сами и выделили. Память, на которую u указывает - можете, под scores - нет.
0
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;
}
0
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.07.2013, 21:29 #10
если память в диспетчере не уменьшается - это еще не значит, что она занята.
система может не забирать ее у процесса до тех пор, пока она действительно не понадобится
другим приложениям. а вот если понадобится этому же, то выделение пройдет быстрее.
есть на эту тему даже теория, согласно которой, если вы запросили n памяти, то очень вероятно
вам вскоре понадобится n*x. по этим же причинам у вектора как правило емкость больше, чем
количество элементов. что-бы однозначно говорить об утечках - нужно использовать специальные
инструменты.
0
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
04.07.2013, 21:34  [ТС] #11
Цитата Сообщение от DU Посмотреть сообщение
нужно использовать специальные
инструменты
скажи какие? я хочу с этой темой серьёзно разобраться
0
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.07.2013, 21:39 #12
ключевые слова типа: memory leak detection c++
поисковик поможет
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
05.07.2013, 00:21 #13
Цитата Сообщение от soican Посмотреть сообщение
скажи какие? я хочу с этой темой серьёзно разобраться
valgrind
0
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]; )
1
svk2140
-8 / 0 / 1
Регистрация: 04.07.2013
Сообщений: 267
05.07.2013, 20:25 #15
ну ты же выделяешь память для массива сразу 50к!!! (50 000) сделай постепенную выдачу, использование, удаление памяти
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2013, 20:25
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.07.2013, 20:25
Ответ Создать тему
Опции темы

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