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

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

Войти
Регистрация
Восстановить пароль
 
 
quizzee
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 18
#1

грамотное использование кучи - C++

19.10.2012, 15:42. Просмотров 1064. Ответов 21
Метки нет (Все метки)

искал но не нашел. ни здесь, ни где бы то ни было.

вкратце:

есть функция

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
unsigned char **SubBytes(unsigned char **var)
{
  int l,r;
  unsigned char **res = new unsigned char *[N];
  for (int i = 0; i < N; i++)
    res[i] = new unsigned char [N];
  
  for(int i = 0; i < N; i++)
  {
    for(int j = 0; j < N; j++)
    {
      l = (var[i][j] >> 4) & 0xf;
      r = var[i][j] & 0xf;
      res[i][j] = sbox[l][r];
    }
  }
  return res;
}
все бы ничего, но когда у меня цикл порядка 100 000 операций, вылазит вполне очевидная вещь.

смотрю в сторону std::vector, но хотелось бы спросить совета.
Миниатюры
грамотное использование кучи  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2012, 15:42     грамотное использование кучи
Посмотрите здесь:

Грамотное использование конструктора копирования - C++
Всем добрый вечер. Есть класс list(двухсвязный). Задача гласит: Сгенерировать некоторую последовательность чисел, вывести на экран, и затем...

Грамотное построение программы - C++
День добрый! Не подскажите какую-нибудь литературу на тему грамотного построения программы, когда лучше использовать классы, а когда...

Как сделать грамотное обращение к текстурам? - C++
Пишу на SDL 2. Есть массив блоков на весь экран, блоки 8 на 8 пикселей (рисую двойным циклом). Блоки используют разные текстуры. К примеру,...

Упрощение, более грамотное написание условия - C++
Доброе время суток! Написал условие: if (v.Type==&quot;avi&quot;||v.Type==&quot;mkv&quot;||v.Type ==&quot;mov&quot;||v.Type ==&quot;mp3&quot;||v.Type ==&quot;ipg&quot;||v.Type...

Необходимо грамотное отсечение столбцов и строк двумерного массива! - C++
Начинаю программировать на С++. Необходимо отсечь строки и столбцы двумерного массива. Если это возможно то из самой памяти. Заранее...

Повреждние кучи - C++
Понимаю, тема стара как мир, но похожих случаев не нашел, к сожалению. Есть консольное приложение, в котором реализуется СУБД библиотеки...

Границы кучи - C++
Как корректно определить границы кучи в любой момент времени без использования функций менеджера дрп в си? Добавлено через 18 часов 7...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.10.2012, 15:55     грамотное использование кучи #2
Опиши словами, что тебе нужно, по графику это не очевидно.
quizzee
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 18
19.10.2012, 16:08  [ТС]     грамотное использование кучи #3
в функции объявлен динамический массив. затем его необходимо возвратить, поэтому возможности освободить занимаемый участок памяти нет. в результате, при многократном обращении к функции, память заполняется до краев.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2012, 16:35     грамотное использование кучи #4
Цитата Сообщение от quizzee Посмотреть сообщение
затем его необходимо возвратить
Дальше с ним что? Нужен до конца программы?
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.10.2012, 16:39     грамотное использование кучи #5
Цитата Сообщение от quizzee Посмотреть сообщение
в функции объявлен динамический массив. затем его необходимо возвратить, поэтому возможности освободить занимаемый участок памяти нет. в результате, при многократном обращении к функции, память заполняется до краев.
Значит тебе нужно столько памяти. Не факт только, что физической оперативной. Что тебе нужно? Разрешить системе свопить динамическую память твоей прилады? Или подключить свои файлы аля своя подкачка?
quizzee
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 18
19.10.2012, 16:44  [ТС]     грамотное использование кучи #6
alsav22, нет, используется как буфер внутри конкретной функции. вот только дело в том что мне эту функцию в цикле нужно использовать
Dmitriy_M
1340 / 1221 / 111
Регистрация: 20.03.2009
Сообщений: 4,375
Записей в блоге: 11
19.10.2012, 16:45     грамотное использование кучи #7
Цитата Сообщение от quizzee Посмотреть сообщение
поэтому возможности освободить занимаемый участок памяти нет
врешь, можно.
quizzee
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 18
19.10.2012, 16:47  [ТС]     грамотное использование кучи #8
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
врешь, можно.
в этой же функции?)
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.10.2012, 16:50     грамотное использование кучи #9
Цитата Сообщение от quizzee Посмотреть сообщение
alsav22, нет, используется как буфер внутри конкретной функции. вот только дело в том что мне эту функцию в цикле нужно использовать
А с какой стати буфера стали выдаваться наружу?
quizzee
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 18
19.10.2012, 16:56  [ТС]     грамотное использование кучи #10
Цитата Сообщение от taras atavin Посмотреть сообщение
Что тебе нужно? Разрешить системе свопить динамическую память твоей прилады? Или подключить свои файлы аля своя подкачка?
да при чем здесь подкачка мне необходимо осовободить занимаемую память, вот только я понятию не имею где это сделать

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
А с какой стати буфера стали выдаваться наружу?
образно говоря буфер. память нужна чтобы туда вложить и оттуда возвратить - всё
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.10.2012, 17:00     грамотное использование кучи #11
Если в цикле, почему нельзя освобождать память после каждой итерации? Указатель же на неё сохраняется после выхода из функции? По куску кода трудно советовать.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
19.10.2012, 17:03     грамотное использование кучи #12
ну судя по коду, есть еще один двумерный массив var
Может все-таки при обращении к его элементам каждый раз производить расчет
C++
1
2
3
      l = (var[i][j] >> 4) & 0xf;
      r = var[i][j] & 0xf;
      res[i][j] = sbox[l][r];
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.10.2012, 17:11     грамотное использование кучи #13
Цитата Сообщение от quizzee Посмотреть сообщение
вот только я понятию не имею где это сделать
Как только станет не нужна.

Добавлено через 2 минуты
Цитата Сообщение от quizzee Посмотреть сообщение
образно говоря буфер. память нужна чтобы туда вложить и оттуда возвратить - всё
Временно положить, потом взять? Это не образ. Но такую память не выдают наружу из той функции, где она используется. А после использования удаляют.

Добавлено через 12 секунд
Цитата Сообщение от quizzee Посмотреть сообщение
образно говоря буфер. память нужна чтобы туда вложить и оттуда возвратить - всё
Временно положить, потом взять? Это не образ. Но такую память не выдают наружу из той функции, где она используется. А после использования удаляют.
quizzee
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 18
19.10.2012, 17:15  [ТС]     грамотное использование кучи #14
Цитата Сообщение от taras atavin Посмотреть сообщение
Но такую память не выдают наружу из той функции, где она используется.
а что же мне в таком случае возвращать?
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
19.10.2012, 17:17     грамотное использование кучи #15
Цитата Сообщение от quizzee Посмотреть сообщение
Сообщение от taras atavin Посмотреть сообщение
Но такую память не выдают наружу из той функции, где она используется.
а что же мне в таком случае возвращать?
Имеется ввиду, что память удаляется в той же функции, где и выделяется. Соответственно в той же функции и необходимо обрабатывать эту память.
quizzee
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 18
19.10.2012, 17:19  [ТС]     грамотное использование кучи #16
Цитата Сообщение от alsav22 Посмотреть сообщение
Если в цикле, почему нельзя освобождать память после каждой итерации?
так ведь мне в дальнейшем результат функции нужно записать уже по другому адресу

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
Соответственно в той же функции и необходимо обрабатывать эту память.
мне эту память нужно использовать непосредственно как возвращаемое значение функции
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.10.2012, 17:23     грамотное использование кучи #17
С какой стати буфера стали выдаваться наружу?
quizzee
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 18
19.10.2012, 17:40  [ТС]     грамотное использование кучи #18
Цитата Сообщение от taras atavin Посмотреть сообщение
С какой стати буфера стали выдаваться наружу?
но мне ведь надо вернуть двумерный массив.
как же я верну не указатель??
quizzee
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 18
19.10.2012, 17:42  [ТС]     грамотное использование кучи #19
может это я крайне криво мыслю)
вот реализация
Вложения
Тип файла: zip Архив ZIP - WinRAR.zip (1.7 Кб, 6 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2012, 20:11     грамотное использование кучи
Еще ссылки по теме:

Ошибка кучи - C++
Выдает ошибку: &quot;ОС Windows инициировала точку останова в Lab2.exe.Это может быть вызвано повреждением кучи и указывает на ошибку в Lab2.exe...

Ошибка кучи - C++
Здравствуйте, уважаемые программисты. Возникла у меня такая проблема: Задали сделать курсовую работу на С++ через MFC. Суть задачи: В...

Размер кучи - C++
С помощью какой библиотечной ф-ции или как узнать размер кучи в языке Си?

Ошибка о повреждение кучи - C++
Вот переделал программу со строками, с использованием классов. Почему-то опять возникает ошибка о повреждение кучи. Не могу понять где...

Размер стэка и кучи - C++
Насколько я знаю, куча и стек растут в направлении друг-дружки в общей куче. Однако, я с удивление обнаружил, что выделить локальный массив...


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

Или воспользуйтесь поиском по форуму:
Dmitriy_M
1340 / 1221 / 111
Регистрация: 20.03.2009
Сообщений: 4,375
Записей в блоге: 11
19.10.2012, 20:11     грамотное использование кучи #20
Цитата Сообщение от quizzee Посмотреть сообщение
в этой же функции?)
вне этой функции, когда он больше не нужен.
Yandex
Объявления
19.10.2012, 20:11     грамотное использование кучи
Ответ Создать тему
Опции темы

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